使用选项卡向ViewPager传输数据

问题描述 投票:1回答:1

我试图以不同于通常的方式使用ViewPager和TabLayout。我有5个选项卡,每个选项卡都有ViewPager,每个选项卡都有两个片段页面(A Fragment和B Fragment)。

对于每个选项卡,ViewPager需要显示具有不同信息的相同片段页面。 (例如Tab的标题显示在A Fragment中,Tab 1的标题是“Android”,而Tab 2的标题是“IOS”)

由于FragmentPagerAdapter在getItem(int position)方法中设置Fragments,如下所示,我尝试在该方法中发送这些信息(有关选项卡的信息)。

我发现了问题,当我启动ViewPager并将适配器设置为它时,适配器只被设置为一次因此,当Tab 1的ViewPager已经设置为A Fragment标题为“Android”时,它不会改为“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代码与其他示例没有太大区别。

再次感谢你!!!

android android-viewpager
1个回答
0
投票

如果Activity需要能够监听所选页面的更改或ViewPager周围的其他事件,那么我们只需要挂钩ViewPager上的ViewPager.OnPageChangeListener来处理事件:

    pager.addOnPageChangeListener(new OnPageChangeListener() {
                            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// This method will be invoked when the current page is scrolled
                            }

                            public void onPageSelected(int position) {
        // set your title here for specic fagment
                //This method will be invoked when a new page becomes selected.



                            }

                            public void onPageScrollStateChanged(int state) {
    // Called when the scroll state changes: 
        // SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING                     

       }
                        });
© www.soinside.com 2019 - 2024. All rights reserved.