Фрагменты: управляйте данными, пока не зарегистрируетесь - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть 3 фрагмента, которые установлены в TabLayout с ViewPager.

enter image description here

Сценарий:

  • Первый фрагмент имеет один ImageView с некоторыми EditText и RadioButtonс СЛЕДУЮЩАЯ Кнопка
  • Второй фрагмент имеет 5 EditText с СЛЕДУЮЩАЯ Кнопка
  • Третий фрагмент имеет 4 ImageView и 4 EditText с Регистрация Кнопка

все поля обязательны для заполнения.

Теперь, что я сделал:

  1. Проверено все проверки наНажатие на кнопку фрагмента 1 и перемещение к следующему фрагменту.

    if (getActivity() != null) {
        ((RegisterActivity) getActivity()).mViewPager.setCurrentItem(1, true);
    }
    
  2. Тот же процесс

  3. Тот же процесс и выполнение для SignUp.

Проблема:

  • Как проверить значения при переходе ко второму фрагменту без нажатия кнопки (слайд-просмотрщик или нажатие на TAB)
  • Как мне обновить все окончательные значения (когда я изменяю их, но не нажимаю на кнопку и не двигаюсь вперед)

Я пытался использовать onAttach и onDetach для сохранения ваlues, но не работает.

Есть ли решение для управления всеми данными и проверки правильности в каждой ситуации?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Не лучшее решение, но обходной путь, который я недавно внедрил.

  • Взять boolean[] от общего количества фрагментов.

вроде:

private boolean[] arrLastPageDone = new boolean[]{false, false, false};

Если все значения фрагмента1 подтверждены, установите true в первой позиции.То же самое для других фрагментов.

  • Просто проверьте значения в onPageSelected.

, например:

pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                if (position > 0 && !arrLastPageDone[position - 1]) {
                    pager.setCurrentItem(pager.getCurrentItem() - 1);
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

И это работает.Он не позволяет смахивать к следующему фрагменту, пока все значения не будут проверены.

view_pager_restriction

  • И вы можете сохранить эти данные в SingleTon Class до тех пор, пока все процессы не будут выполнены.законченный.
0 голосов
/ 11 февраля 2019

Вы можете отслеживать текущую выбранную вкладку с помощью TabLayout.ViewPagerOnTabSelectedListener, посмотрите здесь для получения дополнительной информации Документы В общем случае просто реализуйте этот интерфейс, и тогда вы будете уведомлены, когда пользователь проведет пальцем по вкладкам или если вы программно проведете пальцемвы все равно получите уведомление.

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