代码之家  ›  专栏  ›  技术社区  ›  Damn Vegetables

活动开始时获取Tablayout第一个选项卡的初始选择事件

  •  0
  • Damn Vegetables  · 技术社区  · 6 年前

    onCreate ,我添加了一个使用 addOnTabSelectedListener . 看来 onTabSelected 当初始索引为0时不调用。如何获取此“选定0”事件?

    下面是发生的事情的时间表。粗体部分就是问题所在。我需要得到通知,标签0被选中。

    • 活动是第一次创建的。
    • 选项卡0是自动选择的,但我没有选择OnTabselected。
    • 我单击选项卡1,我将使用1选择ONTABSelected。
    • 我单击选项卡0,我将使用0选择OnTabselected。
    • 我单击选项卡1,我将使用1选择ONTABSelected。
    • 我转动装置。
    • 选项卡1是自动选择的,我用1选择OnTabselected。
    • 我单击选项卡0,我将使用0选择OnTabselected。
    • 我转动装置。
    • 选项卡0是自动选择的,但我没有选择OnTabselected。

    代码

        myAdapter = MyTabAdapter(supportFragmentManager);
        viewPager.adapter = myAdapter;
        tabLayout.setupWithViewPager(viewPager);
        tabLayout.addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener {
    

    布局

    <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        app:tabMode="fixed"
        app:tabGravity="fill"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </android.support.design.widget.TabLayout>
    
    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp">
    
    </android.support.v4.view.ViewPager>
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Tuby    6 年前

    手动调用

    TabLayout.OnTabSelectedListener onTabSelectedListener = new TabLayout.OnTabSelectedListener() {
        @Override public void onTabSelected(TabLayout.Tab tab) {
    
        }
    
        @Override public void onTabUnselected(TabLayout.Tab tab) {
    
        }
    
        @Override public void onTabReselected(TabLayout.Tab tab) {
    
        }
    };
    onTabSelectedListener.onTabSelected(tabLayout.getTabAt(tabLayout.getSelectedTabPosition()));
    tabLayout.addOnTabSelectedListener(onTabSelectedListener);