【发布时间】:2014-01-11 01:52:58
【问题描述】:
一个应用有 2 个 Activity,A 和 B。
A 有保存的实例数据
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("foo", 0);
}
A 有
int bar;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
if (savedInstanceState != null) {
bar = savedInstanceState.getInt("foo");
} else {
bar = -1;
}
}
恢复数据。
活动 B 启用了操作栏,并且
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
// ...
}
启用向上导航。在AndroidManifest.xml 中,A 也被列为 B 的父活动。
当用户从 A 导航到 B 时,onSaveInstanceState 会被调用,如果他们使用后退按钮活动返回到 A,则 A 会正确恢复其保存的信息。
但是,当用户从 A 导航到 B 时调用 onSaveInstanceState,然后使用向上导航返回 A,即使保存了信息,onCreate(Bundle savedInstanceState) 也会传递给 null。
如何启动导航以传递在 onSaveInstanceState 中创建的 Bundle?
【问题讨论】:
-
看起来这是一个重复的,在浏览了更多之后,我找到了this 答案,它清除了一切。
-
我遇到了同样的问题。我在活动 A 中加载了一个 expandableListView 并将其传递给活动 B。当我使用 Android 后退按钮时,ExpandableListView 被保留,但是当我使用“向上”导航时,expandableListView 被破坏并且我有一个空活动。
标签: android android-activity android-actionbar