Android 以编程方式更改TableLayout的选项卡,但不会更新ViewPager的片段

Android 以编程方式更改TableLayout的选项卡,但不会更新ViewPager的片段,android,android-fragments,android-viewpager,android-tablayout,Android,Android Fragments,Android Viewpager,Android Tablayout,我正在开发一个Android应用程序。在我的应用程序中,我正在使用带有ViewPager的TabLayout。当选择底部导航栏上的项目时,我需要以编程方式更新TabLayout的选项卡及其片段。我可以更新TabLayout的选项卡。但是寻呼机的片段没有更新 这就是问题所在: 正如您在上面看到的,选项卡已更改,但其片段未更改。始终显示列表片段。选择第一个选项卡时,所有片段都是相同的。我的意思是碎片根本没有改变 这是用于选项卡和视图寻呼机的XML文件: <android.support.d

我正在开发一个Android应用程序。在我的应用程序中,我正在使用带有ViewPager的TabLayout。当选择底部导航栏上的项目时,我需要以编程方式更新TabLayout的选项卡及其片段。我可以更新TabLayout的选项卡。但是寻呼机的片段没有更新

这就是问题所在:

正如您在上面看到的,选项卡已更改,但其片段未更改。始终显示列表片段。选择第一个选项卡时,所有片段都是相同的。我的意思是碎片根本没有改变

这是用于选项卡和视图寻呼机的XML文件:

 <android.support.design.widget.AppBarLayout android:layout_height="wrap_content"
        android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay">


        <android.support.design.widget.TabLayout
            android:id="@+id/ma_tab_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabGravity="fill"
            app:tabMode="fixed" />

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:id="@+id/ma_viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
我也试过这个:

mainViewPager.setCurrentItem(0);

两者都不起作用。

尝试添加一个方法来交换片段列表,并在适配器中调用
notifyDataSetChanged()
,如下所示:

topTabLayout.getTabAt(0).select();
public void notifyDataSetChanged(List<Fragment> list) {
    fragmentList.removeAll();
    fragmentList.addAll(list);
    notifyDataSetChanged();
}
public void notifyDataSetChanged(列表){
fragmentList.removeAll();
fragmentList.addAll(列表);
notifyDataSetChanged();
}

更改活动中的数据并调用
适配器。notifyDataSetChanged()
可能无法更新您的视图。您可以登录
getItem()
检查适配器是否知道数据集已更改。

尝试添加一种方法来交换片段列表,并在适配器中调用
notifyDataSetChanged()
,如下所示:

topTabLayout.getTabAt(0).select();
public void notifyDataSetChanged(List<Fragment> list) {
    fragmentList.removeAll();
    fragmentList.addAll(list);
    notifyDataSetChanged();
}
public void notifyDataSetChanged(列表){
fragmentList.removeAll();
fragmentList.addAll(列表);
notifyDataSetChanged();
}

更改活动中的数据并调用
适配器。notifyDataSetChanged()
可能无法更新您的视图。您可以登录
getItem()
检查适配器是否知道数据集已更改。

只需检查在MatchesFragment类中使用的布局

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    v = inflater.inflate(R.layout.matches_fragment, container, false);
}

只需在MatchesFragment类中检查正在膨胀的布局

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    v = inflater.inflate(R.layout.matches_fragment, container, false);
}

如果选项卡设置正确,请在设置选项卡的代码下再次运行此操作:

mainViewPager.setAdapter(pagerAdapter)

这是我的密码:

selectedTab=0;
tabLayout.getTabAt(selectedTab.select();

viewPager.setAdapter(tabsAdapter)

如果选项卡设置正确,请在设置选项卡的代码下再次运行此操作:

mainViewPager.setAdapter(pagerAdapter)

这是我的密码:

selectedTab=0;
tabLayout.getTabAt(selectedTab.select();

viewPager.setAdapter(tabsAdapter)

膨胀正确的布局。这不仅仅是更新整个片段集,而是扩展正确的布局。它不仅仅是更新整个片段集。