使用FragmentPagerAdapter时,Fragment的onResume()方法没有被调用

5

我希望当我的fragment处于活跃状态时,它能够始终调用某个函数,因此我将该函数放在了onResume()中,但是它没有被调用。

Fragment 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()方法呢?
2个回答

6

我曾经也遇到过相同的问题。

创建一个新的接口并由你们两个的Fragment来实现它:

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:新接口的名称和方法有点令人困惑,请注意或更改。


3

覆盖 Fragment.setUserVisibleHint 方法。当 setUserVisibleHinttrue 时,调用与 onResume 相同的逻辑。

可以看到,FragmentPagerAdapterinstantiateItemsetPrimaryItem 中调用 setUserVisibleHint 方法。适用于 Android 4.2.1 及以上版本以及 support-v4


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接