我正在构建具有以下结构的应用程序。从后台恢复一个死的应用程序使其行为异常
MainActivity -> Fragment1
-> Fragment2 -> Fragment3
此处Fragment1托管在FrameLayout的MainActivity中。当用户单击Fragment1上的任何选项时,我将切换到在ViewPager上承载Fragment3的Fragment2。
问题是,如果用户在未关闭应用程序的情况下移动到安卓主页,并且持续一段时间该应用程序被Android终止,并且用户尝试从最近的应用程序列表恢复应用程序,则Fragment3显示空白屏幕。
这里是我使用的片段交易
public void requestChangeFragment(Fragment newFragment,String tag,Fragment oldFragment, int anim_in, int anim_out){
if(isStopped()){
return;
}
mFragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(anim_in,anim_out,anim_in,anim_out);
fragmentTransaction.add(R.id.main_frame_layout, newFragment, tag);
Log.i("FragMngr","Animations set in "+anim_in+" out "+anim_out);
fragmentTransaction.addToBackStack(tag);
int count = mFragmentManager.getBackStackEntryCount();
String log="";
fragmentTransaction.commit();
for(int i=0;i<count;i++){
android.support.v4.app.FragmentManager.BackStackEntry backStackEntry = mFragmentManager.getBackStackEntryAt(i);
log += "count "+i+" name "+backStackEntry.getName()+"\n";
}
Log.d("FragMngr","BackStack trace after adding is\n "+log);
if(oldFragment!=null) {
if(oldFragment.isResumed()) {
oldFragment.onPause();
}
}
topFragment = newFragment;
}
requestChangeFragment()
从与interface
在MainActivity
实施的帮助下运行片段调用的方法。
您能否再张贴一些代码plz。像onResume和onPause方法 – user6547359
除了日志以外,这些方法中基本没有任何内容。即使我试图在这些片段中使用Crashlytics,它也会崩溃。 (错误是,Crashlytics没有初始化)如果我试图初始化Crashlytics,它的显示上下文不能为空。 –
您可能没有很好地管理生命周期。这是一个很好的教程,如果你想阅读它https://www.raywenderlich.com/117838/introduction-to-android-fragments-tutorial – user6547359