当我的 Activity (带有两个选项卡的选项卡 Activity )的方向发生变化时,选项卡的内容(这是另一个具有项目 ListView (带有复选框)的 Activity )变为空白。我在 list 文件中使用了 android:configChanges="screenSize|orientation"
,因此我不希望在方向更改时清除(或重新创建)复选框。
谁能帮我解决这个问题?
最佳答案
为了在 Android 的 Activity 中保存 View 的状态,您需要实现 onSaveInstanceState(Bundle outState)
和 onRestoreInstanceState(Bundle savedInstanceState)
方法。查看Android Developer Guide有关这些方法的更多信息。
onSaveInstanceState(Bundle outState)
在配置更改(方向更改)时销毁 Activity 时调用。您可以使用此方法将数据添加到包中,然后在 Activity 重新启动时使用 onRestoreInstanceState(Bundle savedInstanceState)
检索数据。
例如:
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Read values from the "savedInstanceState" bundle and put them back into the corresponding textviews
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Save the values you need from your textviews into the outState object
}
有关如何将数据保存到包中的更多详细信息,请参阅 Android Developer Guide .这也解释了使用 onCreate(Bundle savedInstanceState)
和 onRestoreInstanceState(Bundle savedInstanceState)
恢复状态的区别。
关于Android 屏幕在方向改变时变黑; onConfigurationChanged 被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16162798/