onResume片段方法未被调用

时间:2014-07-20 21:40:38

标签: java android android-fragments

我有一个带有2个片段的活动 Activity1 。一切正常,但我有一个问题:

当我退出当前活动时 - 活动1 - (不调用finish ())并转到另一个活动2 ,然后点击最后一个上的backButton活动我回到 Activity1 并执行此onResume方法

onResume 活动1 代码:

@Override
protected void onResume () {
    super.onResume ();
    fragmentManager.beginTransaction ().replace (
        R.id.my_frame_container, 
        fragmentFactory.getFragment (Fragment1)
    ).commit ();
}

onResume Fragment1 代码:

@Override
public void onResume () {
    super.onResume ();

    Log.e ("onResume ", " Yes ");
}

Documentation开始:当活动的onResume方法也是这样时,会调用片段的onResume方法。

但是在我的情况下,当我回到活动时,没有调用片段的onResume。

您是否知道如何在调用活动的onResume时执行片段代码?谢谢。

1 个答案:

答案 0 :(得分:0)

由于Fragment.onResume与包含活动的Activity.onResume相关联,因此当我们在片段之间切换时,此方法不会被调用,因此您需要使用OnBackStackChangedListener作为自己调用遵循

getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener() {
    public void onBackStackChanged() {
        FragmentManager fm = getSupportFragmentManager();
        if (fm != null) {
            int bseCount = fm.getBackStackEntryCount();
            if (bseCount > 0) {
                Fragment fragment = fm.getFragments().get(bseCount - 1);
                fragment.onResume();
            }
        }
    }
});