简体   繁体   English

覆盖Android中的onResume方法不适用于每个片段

[英]Overiding onResume method in android not working in every fragment

I'm creating android app that have 3 fragments and I want refresh data every time I come back to the fragment. 我正在创建具有3个片段的android应用,每次返回片段时我都希望刷新数据。 So, I override onResume() method in every fragment and add system out print to onresume to check if it's worked correctly. 因此,我在每个片段中重写onResume()方法,并将系统输出打印添加到onresume,以检查其是否正常工作。

But when I navigate to 2nd fragment it shows the add system out print of fragment 3 onresume. 但是,当我导航到第二个片段时,它显示了片段3 onresume的添加系统输出。 when I go to fragment 3 it not showing any add system out print. 当我转到片段3时,它没有显示任何添加的系统输出。 but when I came back to 2nd again it shows add system out print of fragment 1. 但是当我再次回到第二时,它显示了片段1的添加系统输出。

Please help me to fix this issue. 请帮助我解决此问题。

It appears you are using FragmentStatePagerAdapter in your ViewPager . 看来您在ViewPager中使用FragmentStatePagerAdapter It is the expected behaviour of the adapter that only neighbouring fragments are created. 适配器的预期行为是仅创建相邻的片段。 If you do not want this behaviour use FragmentPagerAdapter . 如果您不希望出现这种情况,请使用FragmentPagerAdapter But be aware of the memory taken up by all the fragments. 但是要注意所有片段占用的内存。

Make your fragments implement an interface: 使您的片段实现一个接口:

public interface Listener {
    void resume()
}

Make your activity implement OnPageChangeListener : 使您的活动实现OnPageChangeListener

viewPager.addOnPageChangeListener(this);

and then do the following: 然后执行以下操作:

@Override
public void onPageSelected(int position) {
    ((Listener) mAdapter.getItem(position)).resume();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM