Android碎片不保存状态,旋转/屏幕锁定/返回时崩溃
每当我锁定屏幕、返回、旋转屏幕或点击主屏幕时,我的应用程序都会崩溃。这个应用程序实现了一个带有3个选项卡的片段UI。在我的清单中,我有android:configChanges=“orientation”,这是有效的,直到我改变了一些东西(我不记得它是什么)。现在,即使在我的清单中,我的应用程序也无法处理旋转变化。我正在尝试实现onSaveInstanceState、onRestoreInstanceState、onPause和onResume,但它继续崩溃。下面是一些代码:Android碎片不保存状态,旋转/屏幕锁定/返回时崩溃,android,xml,tabs,views,Android,Xml,Tabs,Views,每当我锁定屏幕、返回、旋转屏幕或点击主屏幕时,我的应用程序都会崩溃。这个应用程序实现了一个带有3个选项卡的片段UI。在我的清单中,我有android:configChanges=“orientation”,这是有效的,直到我改变了一些东西(我不记得它是什么)。现在,即使在我的清单中,我的应用程序也无法处理旋转变化。我正在尝试实现onSaveInstanceState、onRestoreInstanceState、onPause和onResume,但它继续崩溃。下面是一些代码: protected
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");
}
应用程序启动和崩溃日志
super.onSaveInstanceState(outState);
outState.putString("tab",
mTabHost.getCurrentTabTag()); // save the tab selected
应该是
outState.putString("tab",
mTabHost.getCurrentTabTag()); // save the tab selected
super.onSaveInstanceState(超出状态)代码>
在调用onSaveInstanceState之前,需要将“tab”添加到outState,以避免在OnCreate中加载时出现异常。换句话说,您的“选项卡”实际上从未被保存,因为您是在将“选项卡”添加到状态之前保存状态。您收到了什么错误消息?请使用类似aLogCat的日志检查应用程序进行检查。这是日志猫,即使我更改了它,我仍然会得到相同的异常。我的代码以前是这样的,我不知道为什么要修改它。也许只是为了实验。但是,我仍然对//字段描述符#12 I public static final int POP_BACK_STACK_INCLUSIVE=1有同样的问题;我不知道如何才能找到错误,但当应用程序崩溃时,在eclipse中它会打开“FragmentManager.class”,然后说“找不到源代码”。这有用吗?:我该怎么做?我为片段所遵循的教程从未提到过这一点。