Как обрабатывать содержимое динамически нескольких фрагментов из активности - PullRequest
0 голосов
/ 06 июня 2019

Я создаю простое приложение к экзаменационным вопросам.Вот почему я создал динамически несколько фрагментов в соответствии с вопросами.фрагмент содержит 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;
}}

Или, пожалуйста, предложите мне, если какой-либо альтернативный вариант сделать то же самое.Заранее спасибо.

1 Ответ

0 голосов
/ 07 июня 2019

попробуйте использовать этот код в методе фрагмента OnAttach ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...