Android片段管理器片段更改侦听器
使用Android片段管理器片段更改侦听器,android,Android,使用FragmentManager替换片段时,是否可以在事件完成时添加侦听器 所以 我是否可以向myFragmentManager添加一个侦听器,以便知道片段何时被替换?当新的片段处于活动状态时,将启动新的片段的恢复功能。当前面的片段被替换时,你可以做你想做的事情。FragmentManager(android.support.v4.app.FragmentManager)有一个很好的方法叫做registerFragmentLifecycleCallbacks,它可以帮助注册FragmentMa
FragmentManager
替换片段时,是否可以在事件完成时添加侦听器
所以
我是否可以向
myFragmentManager
添加一个侦听器,以便知道片段何时被替换?当新的片段处于活动状态时,将启动新的片段
的恢复
功能。当前面的片段被替换时,你可以做你想做的事情。FragmentManager(android.support.v4.app.FragmentManager)
有一个很好的方法叫做registerFragmentLifecycleCallbacks
,它可以帮助注册FragmentManager.FragmentLifecycleCallbacks
。这允许我们在碎片的生命周期中采取行动。您可以在onFragmentCreated()
中根据需要执行某些操作
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.registerFragmentLifecycleCallbacks(new FragmentManager.FragmentLifecycleCallbacks() {
@Override
public void onFragmentPreAttached(FragmentManager fm, Fragment f, Context context) {
super.onFragmentPreAttached(fm, f, context);
Log.v("FragXX1", f.getTag());
}
@Override
public void onFragmentAttached(FragmentManager fm, Fragment f, Context context) {
super.onFragmentAttached(fm, f, context);
Log.v("FragXX2", f.getTag());
}
@Override
public void onFragmentCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) {
super.onFragmentCreated(fm, f, savedInstanceState);
Log.v("FragXX3", f.getTag());
}
@Override
public void onFragmentActivityCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) {
super.onFragmentActivityCreated(fm, f, savedInstanceState);
Log.v("FragXX4", f.getTag());
}
@Override
public void onFragmentViewCreated(FragmentManager fm, Fragment f, View v, Bundle savedInstanceState) {
super.onFragmentViewCreated(fm, f, v, savedInstanceState);
Log.v("FragXX5", f.getTag());
}
@Override
public void onFragmentStarted(FragmentManager fm, Fragment f) {
super.onFragmentStarted(fm, f);
Log.v("FragXX6", f.getTag());
}
@Override
public void onFragmentResumed(FragmentManager fm, Fragment f) {
super.onFragmentResumed(fm, f);
Log.v("FragXX7", f.getTag());
}
@Override
public void onFragmentPaused(FragmentManager fm, Fragment f) {
super.onFragmentPaused(fm, f);
Log.v("FragXX8", f.getTag());
}
@Override
public void onFragmentStopped(FragmentManager fm, Fragment f) {
super.onFragmentStopped(fm, f);
Log.v("FragXX9", f.getTag());
}
@Override
public void onFragmentSaveInstanceState(FragmentManager fm, Fragment f, Bundle outState) {
super.onFragmentSaveInstanceState(fm, f, outState);
Log.v("FragXX10", f.getTag());
}
@Override
public void onFragmentViewDestroyed(FragmentManager fm, Fragment f) {
super.onFragmentViewDestroyed(fm, f);
Log.v("FragXX11", f.getTag());
}
@Override
public void onFragmentDestroyed(FragmentManager fm, Fragment f) {
super.onFragmentDestroyed(fm, f);
Log.v("FragXX12", f.getTag());
}
@Override
public void onFragmentDetached(FragmentManager fm, Fragment f) {
super.onFragmentDetached(fm, f);
Log.v("FragXX13", f.getTag());
}
}, true);
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.container, new TradeFragment(), "trien");
ft.commit();
您可以在活动类中实现以下侦听器,以监视对片段后台堆栈的更改
public static interface FragmentManager.OnBackStackChangedListener
稍后,您需要在的帮助下将此侦听器注册到片段管理器
addOnBackStackChangedListener (FragmentManager.OnBackStackChangedListener listener)
供您参考的链接
除非将片段添加到backbackback中,否则不会调用此函数,因此无法使用OP的示例
addOnBackStackChangedListener (FragmentManager.OnBackStackChangedListener listener)