CheckBox setChecked () не работает в фоновом фрагменте

В действии есть FragmentViewPager, который содержит 5 фрагментов. 5 фрагментов будут созданы одновременно при запуске действия. Если фрагмент, который выполняет setChecked (), не является главной страницей, когда приложение выполняет CheckBox setChecked (true), пользовательский интерфейс CheckBox пуст, а значение isChecked () истинно.

Я обнаружил, что notifyViewAccessibilityStateChangedIfNeeded( AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); находится в setChecked(boolean checked) android CompoundButton.java. Возможно, он не может изменить пользовательский интерфейс при фрагменте в фоновом режиме. Но как это решить.

if (cls.getIf_allow_to_join().equals("是")) {
                checkBox.setChecked(true);
            } else if (cls.getIf_allow_to_join().equals("否")) {
                checkBox.setChecked(false);
            }

Это код setChecked () фрагмента OnCreateView () в AsyncTask. И если я установлю этот фрагмент как currentItem при запуске действия, этой проблемы не будет.

Скорее всего, вам не хватает базовой концепции, а именно модели, то есть «другого места» для хранения данных. Взгляните на эту статью

Gotiasits 16.04.2018 16:47

Я ценю вашу помощь, но считаю, что ваш комментарий не имеет отношения к моему вопросу.

karuao 16.04.2018 17:59

Вы можете расширить вопрос, чтобы мы могли помочь вам еще кое-что. Добавьте код ..

Gotiasits 16.04.2018 19:18

Хорошо, некоторая информация была добавлена.

karuao 17.04.2018 07:19

@karuao Вы получаете сообщение об ошибке или этого просто не происходит?

nimi0112 17.04.2018 07:50

нет ошибки, просто Android не изменил пользовательский интерфейс CheckBox

karuao 17.04.2018 08:39

Если эта проверка выполняется в doInBackground(), то имеет смысл, что состояние не обновлено должным образом. Как вы назначаете экземпляр флажка? Это относительно экземпляра фрагмента? Это разные идентификаторы для каждого фрагмента? В противном случае это также может быть причиной проблемы.

Gotiasits 17.04.2018 10:49

Эта проверка выполняется в onPostExecute (), который вызывает прослушиватель обратного вызова. Ставлю галочку в onCreateView () фрагмента. Не существует идентификатора для фрагмента, которым управляет FragmentPagerAdapter.

karuao 17.04.2018 17:15

Для других, сталкивающихся с этой проблемой, отметьте этот вопрос: stackoverflow.com/questions/42997873/…

haart 20.01.2021 15:12
1
9
669
1

Ответы 1

Пожалуйста, используйте AppCompatCheckBox вместо CheckBox.

Проверить android.support.v7.widget.AppCompatCheckBox

Другие вопросы по теме