我知道,这个问题之前在stackoverflow上被问过,但是没有答案对我有用。
可能值得一提:
onSaveInstanceState
。方法onCreate
总是为Bundle savedInstanceState
提供NULL。onRestoreInstanceState
。 (我不介意onCreate
是否有效;))。super.onSaveInstanceState(outState)
放在onSaveInstanceState
的底部。也没有运气。这是代码。我希望有人有这个问题并解决了它。
public class MainActivity extends SherlockFragmentActivity {
private static final String LOG_TAG = MainActivity.class.getSimpleName();
private static String STATE_TO_STORE = "state_to_store";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(LOG_TAG, "onCreate: savedInstanceState = " + (savedInstanceState == null ? "NULL" : "Not NULL"));
// ... more code...
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.d(LOG_TAG, "onRestoreInstanceState: savedInstanceState = " + (savedInstanceState == null ? "NULL" : "Not NULL"));
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(STATE_TO_STORE, 5); // store some int
Log.d(LOG_TAG, "onSaveInstanceState bundle: " + outState.toString());
}
// ... more code ...
}
日志记录明确指出正在调用onSaveInstanceState
并且onCreate将获得savedInstanceState = NULL
。
答案 0 :(得分:12)
检查您的清单是否包含android:noHistory =“true”。
我花了好几个小时寻找答案,就这么简单。
答案 1 :(得分:3)
就我而言,原因是特定活动没有在清单文件中声明主题。
要解决此问题,请打开AndroidManifest.xml,单击“应用程序”,在“应用程序节点”中选择崩溃活动,然后在“属性”的“主题”字段中添加主题。就我而言,它是
@style/Theme.AppCompat.Light.DarkActionBar
但您可以从其他活动中复制主题。
P.S。:我知道这是一个旧问题的答案,但我在寻找修复时偶然发现它并没有找到可行的解决方案,所以这可能对其他人有帮助。
答案 2 :(得分:2)
在这里查看我的解释。我确定它涵盖了你的问题。
答案 3 :(得分:2)
按HOME按钮时,您的活动暂停而不会被破坏因此当您从主屏幕再次启动应用时,不会调用onCreate,除非操作系统终止您的应用以回收内存。如果您希望在主屏幕启动时重新创建活动,请将此行android:finishOnTaskLaunch="true"
放在活动清单中。