Android: как выделить заголовок (как если бы он был выбран) следующей вкладки в макете вкладок после навигации

Я создал регистрационную форму с макетом табуляции, которая включает три вкладки (три фрагмента). Я успешно закончил переход к следующему фрагменту после нажатия «Next» в предыдущем фрагменте. Однако моя проблема заключается в том, что я не могу выделить текущую вкладку, которая должна быть выделена (как если бы она была выбрана), когда я нажимаю «Далее» в предыдущем фрагменте.

Ниже приведен мой первый фрагмент (информация об учетной записи):

@Override
    public void onClick(View v) {
                emailid = email.getText().toString();
                if (!isValidEmail(emailid)) {
                    email.setError("Invalid Email");
                }

                pass = password.getText().toString();
                if (!isValidPassword(pass)) {
                    password.setError("Password cannot be empty");
                }
                confirmPass = confirmPassword.getText().toString();
                if (!isValidPassword(confirmPass)) {
                    confirmPassword.setError("Password cannot be empty");
                }

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

                if (isValidEmail(emailid) && isValidPassword(pass)) {
                    viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
                    viewPager.setCurrentItem(1);
                }
    }

ниже мой код активности, как отключить сенсорные или клики на вкладках?

tabLayout = (TabLayout) findViewById(R.id.tabLayout);

        tabLayout.addTab(tabLayout.newTab().setText("Account Info"));
        tabLayout.addTab(tabLayout.newTab().setText("Personal Info"));
        tabLayout.addTab(tabLayout.newTab().setText("Confirmation"));

        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

        viewPager = (ViewPager) findViewById(R.id.pager);
        viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(viewPagerAdapter);
        viewPager.setOnTouchListener(new View.OnTouchListener(){
            @Override
            public boolean onTouch(View v, MotionEvent event)
            {
                return true;
            }
        });
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }
            // This method will be invoked when a new page becomes selected.
            @Override
            public void onPageSelected(int position) {
            Toast.makeText(SignupActivity.this, "Selected page position: " + position, Toast.LENGTH_SHORT).show();
                tabLayout.tabP(true);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

android,android-fragments,tabs,

0

Ответов: 2


1 принят

для этого подхода вы должны реализовать этот метод

viewPager.addOnPageChangeListener

и в onPageSelectedметоде вам нужно переписать имя вкладки в соответствии с условием

вы можете реализовать такой метод

 private void initTabsName() {
        for (int i = 0; i < tabLayout.getTabCount(); i++) {
            TabLayout.Tab tab = tabLayout.getTabAt(i);
            RelativeLayout relativeLayout = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.subcat_custom_tab, tabLayout, false);
      // do something to make tab selected using if else statements
        /* // for example
           if (i == 0) {

            }
         */
        tab.setCustomView(relativeLayout);
        }
    }

0

Добавление приведенного ниже кода решило мой вопрос:

if (isValidEmail(emailid) && isValidPassword(pass)) {
    viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
    viewPager.setCurrentItem(1);
    tabLayout = (TabLayout) getActivity().findViewById(R.id.tabLayout);
    tabLayout.getTabAt(1).select();
}

Я инициировал мое, tabLayoutесли мое условие истинно и называется методом, getTabAt()который отвечает за выделение вкладок в макете вкладок. Я буквально указал позицию табуляции «1» (не 0, так как 0 все еще первая вкладка), в getTabAt(1)которой я должен выделить в успешном состоянии.

андроид, андроид-фрагменты, вкладки,