Zmierzyłem się z tym dziwnym problemem, który spowodował wiele bólu głowy i kłopotów.Android TextView nie aktualizuje tekstu, gdy textIsSelectable jest ustawione na true
Opublikowałem aplikację, która jest repozytorium kilku książek, zdecydowałem się użyć TextView, aby wyświetlić tekst każdego rozdziału, ponieważ spełnia on wymagania i jest szybki i łatwy w użyciu.
Użytkownik poprosił o możliwość wyboru tekstu i skopiowania go, użyłem textIsSelectable = true i wszystko było w porządku, następnego dnia zadzwonił do mnie z informacją, że tekst się nie zmienia, otwierasz rozdział i przechodzisz na inny rozdział, ale tekst pozostaje ten sam.
Pomyślałem, że to może być jakiś logiczny problem z mojej strony, ale po pewnym debugowaniu problem był w TextView, kiedy ustawiłem textIsSelectable = false; Wszystko było w porządku.
Dla pewności użyłem statycznego int, który jest zwiększany za każdym razem, gdy tekst jest wyświetlany, tekst pozostał niezmieniony.
Na czym polega problem? czy używam TextView w niewłaściwy sposób? lub jest to jakiś błąd w samym TextView?
Oto mój układ (txtBody jest TextView że przyczyną problemu)
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollView"
android:fillViewport="true"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="right">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Title Text"
android:id="@+id/txtTitle"
android:textSize="24sp"
android:padding="5dp"
android:gravity="right"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Detail Text"
android:id="@+id/txtBody"
android:background="@android:color/white"
android:gravity="right"
android:textColor="@android:color/black"
android:textSize="16sp"
android:padding="5dp"
android:enabled="true"
android:textIsSelectable="true"
android:selectAllOnFocus="false"
android:soundEffectsEnabled="true"/>
</LinearLayout>
</ScrollView>
</FrameLayout>
używam tego kodu, aby ustawić tekst:
String body = MainDataManager.getInstance().getChapterBody(book.getTable(), chapter.getId());
updateTextStyle();
txtTitle.setText(chapter.getTitle());
txtBody.setText(body, TextView.BufferType.SPANNABLE);
Po 2 ~ 3 godzinach eksperymentowania, stwierdziłem, że to była przyczyna. Nienawidzę, gdy mój czas się marnuje ... Dla mojej wyszukiwarki Google ta strona była pierwszym trafieniem, a drugim hitem było [https://code.google.com/p/android/issues/detail?id=78491 ] Opis dokładnie pasuje do mojej sprawy. Zostało oznaczone jako BUG w 2014 roku z średnim priorytetem i nie zostało to naprawione w 2016 roku. Nie po raz pierwszy zmarnowałem swój czas w ten sposób ... przez błąd, który nie został naprawiony od kilku lat. –