Я создаю простое приложение к экзаменационным вопросам.Вот почему я создал динамически несколько фрагментов в соответствии с вопросами.фрагмент содержит TextView для вопроса и 4 RadioButton для вариантов.В действии есть одна кнопка для отмены выбора (если выбран ответ).Для этого я создал интерфейс , внедрил метод во фрагмент и попытался снять отметки со всех переключателей, но метод вызывается, но переключатели в большинстве случаев по-прежнему проверяются и несколько раз отменяются.Я не совсем понял, что такое хэппинг, пожалуйста, помогите.
Когда я перепроверю все вещи, я обнаружил одну вещь, когда выбираю 8 вариантов из 8 вопросов подряд и начинаю снимать флажок с каждого из первого фрагмента.когда я был в 0-й позиции фрагмента и нажимал на кнопку, он снимает флажок, но когда я прокручиваю к следующему фрагменту (1-й) и нажимаю на кнопку, и он снимает флажок с 2-го фрагмента соответственно, 2-й снимает флажок 3-й, 3-й снимает флажок 4-й4-й снимает флажок 5-й, 5-й ничего не происходит, 6-й снимает флажок 7-й.Скажите, пожалуйста, как я могу решить эту проблему.
Код, указанный ниже,
FragmentManager fm = getSupportFragmentManager();
viewPager.setAdapter(new FragmentStatePagerAdapter(fm) {
public int getCount() {
return titles.size();
}
public Fragment getItem(int position) {
QuestionsFragment fragment = new QuestionsFragment();
fragment.setText(titles.get(position), position); //
return fragment;
}
public int getItemPosition(Object item) {
QuestionsFragment fragment = (QuestionsFragment)item;
String title = fragment.getText();
int position = titles.indexOf(title);
if (position >= 0) {
return position;
} else {
return POSITION_NONE;
}
}
});
Интерфейс:
public interface ClearSelection {
public void reamoveAllSelections();}
Фрагмент:
public final class QuestionsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.question_fragment, null);
textView = view.findViewById(R.id.tv_question);
rbOptionOne = view.findViewById(R.id.rb_option_one);
rbOptionTwo = view.findViewById(R.id.rb_option_two);
rbOptionThree = view.findViewById(R.id.rb_option_three);
rbOptionFour = view.findViewById(R.id.rb_option_four);
((QuestionsActivity)getActivity()).clearSelectionApi(new ClearSelection() {
@Override
public void reamoveAllSelections() {
if (rbOptionOne.isChecked()) {
rbOptionOne.setChecked(false);
}
if (rbOptionTwo.isChecked()) {
rbOptionTwo.setChecked(false);
}
if (rbOptionThree.isChecked()) {
rbOptionThree.setChecked(false);
}
if (rbOptionFour.isChecked()) {
rbOptionFour.setChecked(false);
}
}
});
return view;
}}
Или, пожалуйста, предложите мне, если какой-либо альтернативный вариант сделать то же самое.Заранее спасибо.