我正在構建具有以下結構的應用程序。從後臺恢復一個死的應用程序使其行爲異常
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