次の構造を持つアプリケーションを構築しています。
MainActivity -> Fragment1
-> Fragment2 -> Fragment3
ここで、Fragment1 は FrameLayout の MainActivity でホストされています。ユーザーが Fragment1 のオプションをクリックすると、ViewPager で Fragment3 をホストする Fragment2 に切り替わります。
問題は、ユーザーがアプリを閉じずに Android ホームに移動し、しばらくの間 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
ます。