在调用和关闭片段后返回到 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
这意味着它在其兄弟姐妹之上..
希望对您有所帮助
假设 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
这意味着它在其兄弟姐妹之上..
希望对您有所帮助