如下所示。最好的方法是向视图分页程序中添加一个侦听器,以了解每个片段何时被选中。
这样,例如,活动可以通过接口触发片段刷新侦听器。
发布于 2015-07-14 03:06:15
检查这两个答案的post,并注释它是您需要的。为了想出一个更清晰的解决方案,你翻转它们时想要调用的代码将它们放在Fragment类的public method中,然后在ViewPager的onPageSelected中,通过position (或者无论如何你想像ViewPager.getItem(pos)这样做)访问的特定片段将返回一个片段,你可以检查该片段是否是你喜欢的片段类的一个实例,并将其转换为你的代码并调用你的代码
//suppose i have my fragment via myViewp.getItem(2)
if(fragmentObject instanceof MyFragmentClass){
//do work
}
//put else and check for others发布于 2015-07-14 03:16:52
没有对片段的直接回调;从框架来看,片段的所有三个生命周期都是相同的:它们附加到活动、创建、创建视图和恢复。这些回调都与它们在ViewPager中的显示方式无关,这是有充分理由的。
相反,您感兴趣的是ViewPager中的回调。为此,您可以注册一个ViewPager.OnPageChangeListener
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// If you would like to have more granular control than onPageSelected(),
// you may inspect when the user "begins to scroll" to the next page
}
@Override
public void onPageSelected(int position) {
Fragment fragment = mAdapter.getItem(position);
if (fragment instanceof OnMyFragmentSelectedListener) {
((OnMyFragmentSelectedListener) fragment).onMyFragmentSelected();
}
}
@Override
public void onPageScrollStateChanged(int state) {
}在上面的代码片段中,我引入了一个名为OnMyFragmentSelectedListener的接口。如果您让片段实现它,并实现onMyFragmentSelected()方法,ViewPager将在其页面被选中时通知您的片段。
您可以通过使用OnPageChangeListener来做一些有趣的事情,例如,像在JazzyViewPager中那样在片段之间设置动画。在您的示例中,您可以在调用侦听器时开始加载附加数据。
发布于 2015-07-14 03:32:50
你需要通过setArguments传递你想要的数据。
ChildFragment fragment = new ChildFragment();
Bundle bundle = new Bundle();
bundle.putInt("PARAMETER", param);
fragment .setArguments(bundle);https://stackoverflow.com/questions/31390934
复制相似问题