Android 以编程方式更改TableLayout的选项卡,但不会更新ViewPager的片段
我正在开发一个Android应用程序。在我的应用程序中,我正在使用带有ViewPager的TabLayout。当选择底部导航栏上的项目时,我需要以编程方式更新TabLayout的选项卡及其片段。我可以更新TabLayout的选项卡。但是寻呼机的片段没有更新 这就是问题所在: 正如您在上面看到的,选项卡已更改,但其片段未更改。始终显示列表片段。选择第一个选项卡时,所有片段都是相同的。我的意思是碎片根本没有改变 这是用于选项卡和视图寻呼机的XML文件: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.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)代码>膨胀正确的布局。这不仅仅是更新整个片段集,而是扩展正确的布局。它不仅仅是更新整个片段集。