Android 片段不保存状态,在旋转/屏幕锁定/返回时崩溃
Posted
技术标签:
【中文标题】Android 片段不保存状态,在旋转/屏幕锁定/返回时崩溃【英文标题】:Android fragments not saving states, crashing on rotation/screen lock/back 【发布时间】:2012-03-20 02:11:17 【问题描述】:每当我锁定屏幕、返回、旋转屏幕或点击主屏幕时,我的应用程序都会崩溃。这个应用程序实现了一个带有 3 个选项卡的片段 UI。在我的清单中,我有 android:configChanges="orientation",并且这是有效的,直到我改变了一些东西(我不记得它是什么)。现在即使在我的清单中,我的应用程序也无法处理旋转更改。我正在尝试实现 onSaveInstanceState、onRestoreInstanceState、onPause 和 onResume,但它继续崩溃。以下是部分代码:
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
// Inflate the layout
setContentView(R.layout.main);
// Initialize the TabHost
this.initializeTabHost(savedInstanceState);
if (savedInstanceState != null)
// set the tab as per the saved state
mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
// Initialize ViewPager
this.initializeViewPager();
@Override
protected void onPause()
super.onPause();
@Override
protected void onResume()
super.onResume();
@Override
protected void onSaveInstanceState(Bundle outState)
super.onSaveInstanceState(outState);
outState.putString("tab",
mTabHost.getCurrentTabTag()); // save the tab selected
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
super.onRestoreInstanceState(savedInstanceState);
String myString = savedInstanceState.getString("tab");
用于应用程序启动和崩溃的 LOGCAT
【问题讨论】:
您收到什么错误信息?请使用 aLogCat 等日志检查应用程序进行检查。 这里是 logcat pastebin.com/dU4663Ey 【参考方案1】:super.onSaveInstanceState(outState);
outState.putString("tab",
mTabHost.getCurrentTabTag()); // save the tab selected
应该是
outState.putString("tab",
mTabHost.getCurrentTabTag()); // save the tab selected
super.onSaveInstanceState(outState);
您需要在调用 onSaveInstanceState 之前将“tab”添加到 outState 以避免在 OnCreate 中加载时出现异常。换句话说,您的“标签”实际上从未被保存,因为您在将“标签”添加到状态之前保存状态。
【讨论】:
即使我改变它,我仍然得到同样的异常。我的代码实际上是以前的,我不确定为什么要更改它。可能只是为了实验。但是,我仍然遇到同样的问题 // Field descriptor #12 I public static final int POP_BACK_STACK_INCLUSIVE = 1; 我不知道如何,我的意思是我可以找到错误,但是当应用程序崩溃时,在 Eclipse 中它会打开“FragmentManager.class”,然后说“找不到源”。这有帮助吗?:pastebin.com/MtrFFNBc 我该怎么做?我为片段遵循的教程从未提到过。以上是关于Android 片段不保存状态,在旋转/屏幕锁定/返回时崩溃的主要内容,如果未能解决你的问题,请参考以下文章
在recyclerview片段Reandroid中屏幕旋转后进度条不显示