【发布时间】:2015-03-18 07:16:44
【问题描述】:
我有一个托管 2 个片段的活动,但我不使用 viewpager。我的做法如下。当我从 Fragment1 移动到 Fragment2 时,我看到 Fragment1 的 onSaveInstanceState 被调用。但是,当我从 Fragment2 移回 Fragment1 时,onCreate() 和 onCreateView() 被调用,且 savedInstanceState 为 null。
我已经在片段的onCreate() 中尝试了setRetainState(true)。我错过了什么?谢谢。
P.S:SO 有一个标记为重复的问题 Saving Fragment's state after replacing Fragment 但原来的问题不再存在。
switch (event.option) {
case 1:
getSupportActionBar().show();
if (frag1 == null)
frag1 = new Fragment1();
fragmentManager.beginTransaction().replace(R.id.v4_main_content, frag1).commit();
break;
case 2:
getSupportActionBar().hide();
if (frag2 == null)
frag2 = new Fragment2();
fragmentManager.beginTransaction().replace(R.id.v4_main_content, frag2).commit();
break;
}
更新:注释中要求的代码,Fragment1()中的函数
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Save near location
outState.putParcelable(KEY_NEAR_LOCATION, mNearLocation);
outState.putLong(KEY_SELECTED_TIME_IN_MILLIS, mSelectedTimeInMillis);
}
【问题讨论】:
-
能把fragment的onSaveInstanceState函数的代码贴出来吗?
-
@SujanShrestha 确定,已更新。