web-dev-qa-db-ja.com

android.support.design.widget.TabLayout select Tab Tabプログラム

Android.support.design.widget.TabLayoutを使用しています。 2つのタブがあります。特定の条件で2番目のタブを選択した場合、ユーザーが最初のタブにリダイレクトし、条件が一致するまでsencondタブに移動できないようにします。これを達成するために、私は試しました、

tabLayout.getTabAt(0).select(); 

しかし、それは最初のタブを再選択しません

20
Pankaj

これは、そのビューがまだinitializedではなく、何らかのアクションを実行しようとしているためです。

解決策として、1つだけを置く必要があります特定のタブを選択する前にハドラー

new Handler().postDelayed(
    new Runnable(){
        @Override
        public void run() {
            tabLayout.getTabAt(yourTabIndex).select();
        }
}, 100);
48

これは私がそれを解決した方法です:

tabLayout.getTabAt(CurrentItem).getCustomView().setSelected(true);
3

これは私のために働いた:

int tabIndex = 2;
tabLayout.setScrollPosition(tabIndex,0f,true);
viewPager.setCurrentItem(tabIndex);
1
Alex Jolig

これが私のセットアップです。私にとってはうまくいきます。

      //declare your tabs to be add on
        TabLayout tlDailyView;
        private TabLayout.Tab tabAppointment, tabSlots;


    @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_daily_view, container, false);
            initializeMembers();
            setupTabLayout();
            return view;
        }


    private void setupTabLayout() {
            tlDailyView.addTab(tabAppointment, 0, true);
            tlDailyView.addTab(tabSlots, 1, true);
            tlDailyView.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                @Override
                public void onTabSelected(TabLayout.Tab tab) {

                    switch (tab.getPosition()) {
                        case 0:
                        //open fragment at position 0 here
                        case 1:
                        //open fragment at position 1 here
                            break;
                    }

                }

                @Override
                public void onTabUnselected(TabLayout.Tab tab) {

                }

                @Override
                public void onTabReselected(TabLayout.Tab tab) {

                }
            });
        }

 private void initializeMembers() {
        tabSlots = tlDailyView.newTab();
        tabAppointment = tlDailyView.newTab();
        tabAppointment.setText(R.string.tab_appts).select();
        tabSlots.setText(R.string.tab_slots);
    }

上記のタブレイアウトを初期化することを忘れないでください。

0
vikas kumar
tabLayout.getTabAt(index specific).select();
0
Meysam Keshvari

Fragment.onViewCreated()でタブを選択できます。

0
Nimo