2014-11-14 55 views
1

我有一个ViewPager,里面有11个片段。我正在寻找在创建分段后向碎片发送参数的方法将参数发送给ViewPager片段

@Override 
     public Fragment getItem(int position) { 
      return new ScreenSlidePageFragment(); 
     } 

此功能仅在第一次调用。每次我滑动ViewPager和片段显示给用户,我想发送新的参数到可见的碎片片段?这可能吗 ?

+1

Check out http://stackoverflow.com/questions/10078894/viewpager-pass-bundles-between-fragments – Fareya 2014-11-14 19:52:26

回答

0

问题的第一部分是检测页面何时更改。您可以使用pager.setOnPageChangeListener()来设置ViewPagerOnPageChangeListener。在您创建的OnPageChangeListener内,您需要覆盖onPageChanged方法并将逻辑放到那里。请参阅此处以供参考:https://stackoverflow.com/a/11797936/3081611

问题的第二部分是如何将逻辑发送到片段本身。所以你需要对片段进行一些参考。您可以从onPageChanged方法获取片段的索引。但是,它实际上并不会将片段返回给您 - 只有位置。获取实际的片段有点棘手。您不能使用寻呼机的getItem功能。这有点令人迷惑,但getItem()ViewPager用于创建新片段的内容。如果你尝试使用它,你只会得到一个新的ScreenSlidePageFragment的参考信息,但实际上并没有显示在屏幕上。

一个好办法来解决这个问题是延长ViewPager,并使得创建或破坏片段时,它被保存在一个阵列覆盖instantiateItem()destroyItem()功能自定义的寻呼机。然后你可以创建一个返回数组中实际片段的函数。请参阅以下内容以供参考:https://stackoverflow.com/a/15261142/3081611

+0

Fareya对上面原始问题的回复解决了问题的第三部分 - 一次你已经检测到页面已经改变,并且你有一个被改变的片段的引用,你如何向它发送数据?如果您需要该部分的帮助,请查看它。 – 2014-11-14 19:57:47