片段的onResume()使用FragmentPagerAdapter时不叫(Fragment on

2019-08-17 16:22发布

我需要我的片段总是调用某个功能时,他们是活跃的片段,所以我把它的onResume(),但它不会被调用。

片段A

@Override
public  void onResume(){
    super.onResume();
    Log.d("clear state", " "+clear);
    if(clear == true)
    {
        restart();
        clear = false;
        calculate();
    }
}

我用FragmentPagerAdapter与ViewPager切换片段

public class ScoutingFragSingle extends FragmentPagerAdapter{


@Override
public Fragment getItem(int index) {
    Bundle data = new Bundle();
    switch(index){
    case 0:
        TeamsFragment teamsFragment = new TeamsFragment();
        data.putInt("current_page", index+1);
        teamsFragment.setArguments(data);
        return teamsFragment;
    case 1:

        data.putInt("current_page", index+1);
        data.putInt("matchId", matchNum);
        aFragment.setArguments(data);
        return aFragment;

那么,如何会让碎片拨打他们的onResume()?

Answer 1:

我前一阵子有同样的问题。

创建一个新的接口,并通过二者的你实现它Fragment S:

public interface OnPageSelectedListener {
    void onPageSelected();
}

在父活动实现android.support.v4.view.ViewPager.OnPageChangeListener并呼吁Fragment的方法是这样的:

@Override
public void onPageSelected(int i) {
    OnPageSelectedListener fragment = (OnPageSelectedListener ((PlaceListPagerAdapter)pager.getAdapter()).getFragment(i);
    fragment.onPageSelected();
}

PS:新界面的名称和它的方法是有点混乱,所以要小心或改变它。



Answer 2:

覆盖Fragment.setUserVisibleHint 。 当setUserVisibleHinttrue通话同样的逻辑,你使用onResume

你可以看到,当FragmentPagerAdapter调用setUserVisibleHint在instantiateItem和setPrimaryItem 。 适用,因为4.2.1和支持-V4Android。



文章来源: Fragment onResume() isn't called when using FragmentPagerAdapter