在调用和关闭片段后返回到 Activity 不会改变我的 Activity 的生命周期

Returning back to an Activity after calling and closing a Fragment does not change my Activity's lifecycle

假设 Activity 充当启动各种片段的主页(它永远不会关闭),如何知道 Activity 何时对用户可见?

根据我的观察,当我打开一个片段时,Activity 的生命周期永远不会改变,不会调用 onPause()。当我关闭片段时,不会在我的 Activity.

上调用 onResume()

这是我开始片段的方式,我正在使用此方法并将要启动的片段传递给它。

public void addFragment(int containerId, Fragment fragment, boolean addToBackStack) {
    // Check if the fragment has been added already. If so, then
    // don't add the fragment.
    Fragment temp = mFragmentManager.findFragmentByTag(fragment.getClass().getName());
    if(temp != null && temp.isAdded()) {
        return;
    }

    FragmentTransaction ft = mFragmentManager.beginTransaction();

    ft.add(containerId, fragment, fragment.getClass().getName());
    if(addToBackStack) 
        ft.addToBackStack(null);        

    ft.commit();
}

指示我的 Activity 再次可见的方法是什么?提前致谢!

在你家activity的oncreate方法中,调用

mFragmentManager.addOnBackStackChangedListener(this) ;

然后定义

@Override
public void onBackStackChanged() {
    int backStackCount = mFragmentManager.getBackStackEntryCount();
    if(backStackCount == 0) {} //back to home screen
}

您的 Activity 始终是 Visible,即使同时显示数千个 Fragment,为了便于理解,片段只是 Custom-View,并且Fragment 在处理您的 View 时提供了帮助,因此您的 activity 上的 onPause() 不需要在 Fragment 死亡或出生时调用,就像膨胀视图一样。

正如@Tim Mutton 先生所说,您需要检查您的 BackStack 以了解您是否返回,或者您可以使用 ViewGroup 方法 ViewGroup.indexOfChild(View child) - 此方法将一个 int 值getChildCount()-1 这意味着它在其兄弟姐妹之上..

希望对您有所帮助