以编程方式更改片段的选项卡索引

Mar*_*eal 7 tabs android nullpointerexception android-fragments

尝试以编程方式切换片段内的tablayout时,我得到一个空指针异常,

所以我的主要活动有一个标签布局(4个标签)每个标签都有一个包含片段的视图寻呼机,每个片段都有一个标签布局(x个标签数量),一个视图寻呼机拿着一个片段,我可以从这样的任何片段切换我的主要活动选项卡布局的选项卡

TabLayout tabLayout = MainActivity.tabLayout;
TabLayout.Tab tab = tabLayout.getTabAt(2);
tab.select();
Run Code Online (Sandbox Code Playgroud)

但如果我尝试以相同的方式更改其中一个片段的选项卡,我会得到一个空指针

TabLayout tabLayout2 = tabFragOne.tabLayout;
TabLayout.Tab tab2 = tabLayout2.getTabAt(2);
tab2.select();
Run Code Online (Sandbox Code Playgroud)

它只会在应用程序首次打开时单击相关按钮时发生,这表明原因是片段尚未附加或创建,

例如,如果我滚动到我要切换到的片段选项卡,然后返回主活动并按下有问题的按钮它将工作.有谁知道解决这个问题的最佳方法?

好吧我发现这个问题的一半关键实际上就是我使用了一个视图寻呼机适配器,这里的一个问题为我的问题提供了很多启示

THA*_*rum 4

设置选定选项卡的正确方法是,我们应该从 Pager 设置选定索引。

final ViewPager pager = (ViewPager) findViewById(R.id.pager);
final TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);

tabLayout.setupWithViewPager(pager);
pager.setCurrentItem(0);//selected position
Run Code Online (Sandbox Code Playgroud)

这是我的 xml 布局设计

<android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="#ffffff"
            android:background="@color/al_white"
            android:elevation="0dp" />

       <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#ffffff"
            app:tabTextColor="#494a43"
            app:tabSelectedTextColor="#494a43"
            app:tabIndicatorColor="#494a43"
            app:tabIndicatorHeight="2dp"
            app:tabMode="fixed"
            app:tabGravity="fill" />
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)