我正在保存我的片段数据以及我需要以片段“onSaveInstanceState”和活动“onSaveInstanceState”恢复它们
我没有使用任何xml布局,一切都是用代码创建的 . 正如我所看到的,当活动恢复时,在“Bundle savedInstanceState”中有一个带有FragmentManagerState类型的“android:support:fragments”键 .
但我不知道如何使用它来恢复碎片历史
这是我的活动
public class MainActivity extends NemoActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ModelUser.getCurrentUser(getApplicationContext());
ModelUser.getCurrentUser().Authenticate();
mRootLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.nemoui_activity_startup_background));
if (savedInstanceState != null) {
Log.d("nemo", "saved state");
} else {
if (Settings.getInstance().isFirstRun()) {
ShowWelcomeScreen();
} else {
ShowFragment(new MainMenuFragment(), "fullscreen", "main-menu", null);
}
}
} ......
和root活动:
public class NemoActivity extends AppCompatActivity {
protected FrameLayout mRootLayout;
protected HashMap<String, FragmentPlaceholder> mPlaceholderTagMap = new HashMap<>();
protected HashMap<String, FragmentPlaceholder> mFragmentTagMap = new HashMap<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mRootLayout = new FrameLayout(this);
mRootLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
setContentView(mRootLayout);
}
这是我如何添加/替换片段
....
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(root.getFragmentRootResourceID(), fragment, tag);
transaction.addToBackStack(tag);
transaction.commit();
....
我的片段被添加到“FrameLayout”的自定义子类中(它不保存任何包数据)并且是3级深度