【问题标题】:Sending Arguments to a ViewPager fragment向 ViewPager 片段发送参数
【发布时间】:2014-11-15 03:54:37
【问题描述】:

我有一个包含 11 个片段的 ViewPager。我正在寻找在创建片段后向片段发送参数的方法

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

这个函数只在第一次被调用。每次我滑动 ViewPager 并向用户显示 Fragment 时,我想向可见的 Fragment Fragment 发送新参数?这可能吗 ?

【问题讨论】:

标签: android


【解决方案1】:

问题的第一部分是检测页面何时更改。您可以使用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

【讨论】:

  • Fareya 对您上述原始问题的回答解决了问题的第三部分——一旦您检测到页面已更改并且您拥有对已更改片段的引用,您如何发送数据给它?如果您需要这部分的帮助,也请检查一下!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多