【发布时间】:2019-04-16 06:16:57
【问题描述】:
我正在尝试以不同于通常的方式使用 ViewPager 和 TabLayout。 我有 5 个选项卡,每个选项卡都有 ViewPager,每个选项卡都有两个片段页面(A 片段和 B 片段)。
对于每个选项卡,ViewPager 需要显示具有不同信息的相同片段页面。 (如A Fragment中显示Tab的标题,Tab 1的标题为“Android”,Tab 2的标题为“IOS”)
由于 FragmentPagerAdapter 在 getItem(int position) 方法中设置片段,如下所示,我尝试在该方法中发送这些信息(有关选项卡的信息)。
我发现了问题,当我启动 ViewPager 并将适配器设置为它时,适配器仅设置一次因此,当 Tab 1 的 ViewPager 已设置为“Android”标题的 A Fragment 时,它不会更改为“IOS”当我把它转到第二个标签 Tab2 时。
有什么方法可以将每个选项卡的不同信息发送到 ViewPager 以不同方式接收信息?
也许是我写得太宽泛了?如果您需要更具体的信息,或者没有得到问题,请告诉我,我会为您解释更多。
感谢您的帮助
我的 FragmentPagerAdapter
public class ManagerPagerAdapter extends FragmentPagerAdapter{
....
@Override
public Fragment getItem(int position){
...
/* I received informations about the tab, and setted to bundle.
So thought each tab gives different bundle data to AFragment.
But since the Adapter is setted only once, this method is not
called more than once*/
Bundle bundle = new Bundle();
switch(position){
case 0:
AFragment fragment_a = new AFragment();
fragment_a.setArguments(bundle);
return fragment_a;
case 1: //Not really matters
BFragment fragment_b = new BFragment();
return fragment_b;
}
}
}
我的 TabLayout 代码与其他示例没有太大区别。
再次感谢!!!
【问题讨论】:
-
您可以在
ViewPager.OnPageChangeListenerofViewPager期间更改标题。 -
该方法仅在一个 ViewPager 中有效。我不是指一个 ViewPager,而是每个 ViewPager 设置到每个选项卡。并且每个ViewPager都需要表示tab的信息,但是由于制作每个tab的ViewPager效率低下,所以我正在寻找方法让ViewPager在每个Tab被选中时接收关于Tab的信息。 :)