片段生命周期Android

时间:2015-07-13 18:37:23

标签: android android-fragments fragment android-lifecycle

如下所述。最好的方法是向viewpager添加一个监听器,以了解何时选择每个片段。

这样,活动可以通过接口触发片段刷新侦听器。

3 个答案:

答案 0 :(得分:1)

检查此post这两个答案,并评论它是您需要的。还要考虑一个更清晰的解决方案,当你翻转它们时要调用的代码将它们放在public method类的Fragment中,然后放在ViewPager中的onPageSelected中正在访问的特定片段中无论是通过位置(或者你想要像ViewPager.getItem(pos)这样做)都将返回一个片段,你可以检查该Fragment是否是你喜欢的Fragment类的实例并将其转换为它并调用你的代码

//suppose i have my fragment via myViewp.getItem(2)
if(fragmentObject instanceof MyFragmentClass){
    //do work
 }
 //put else and check for others

答案 1 :(得分:1)

没有立即回调片段;从框架来看,Fragment的所有三个生命周期都是相同的:它们被附加到活动,创建,创建视图和恢复。这些回调都与它们在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中的片段之间的动画。在您的情况下,您可以在调用侦听器时开始加载其他数据。

答案 2 :(得分:1)

您需要通过setArguments传递所需的数据。

 ChildFragment fragment = new ChildFragment();
 Bundle bundle = new Bundle();
 bundle.putInt("PARAMETER", param);
 fragment .setArguments(bundle);