問題背景:
目前MainActivity添加了四個Fragment分别為AppHomeFrament,AppEditFragment,AppWorksFragment和AppSetupFragment,而在AppSetupFragment中有一個切換夜間模式的功能使用了activity.recreate();導緻頁面重新建立,并且回到了第一個Fragment(AppWorksFragment)頁面,現在需求是需要切換夜間模式之後停留在第四個Fragmnet(AppSetupFragment),是以需要定義一個标志讓MainActivity重新建立之後,預設回到第四個Fragmnet(AppSetupFragment)。
MainActivity中:
private int indexPage = 0;//預設為第一個Fragment,當使用者在第四個Fragment時候,需要設定為3
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
LogUtil.i(TAG, "1onSaveInstanceState:" + indexPage);
outState.putInt("page_index", indexPage);
}
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
indexPage = savedInstanceState.getInt("page_index", 0);
LogUtil.i(TAG, "1onRestoreInstanceState:" + indexPage);
if (indexPage == 3) {
//具體的顯示方法
onSelectFragment(setupFragment);
}
}
通過onSaveInstanceState儲存狀态和資料,然後通過onRestoreInstanceState在此次讀取資料,就可以讓Activity重新建立之後依然能夠回到第四個Fragment。