问题:我有一个带标签的Android应用程序,每当我按照这些(无可置疑的奇怪)步骤时,我就会丢失TabOne中的内容:
Android应用程序说明:我有一个非常简单的Android应用程序,其中有三个使用google's TabLayout
tutorial构建的选项卡,我们称之为TabOne,TabTwo和TabThree。只有TabOne有任何内容:一个简单的EditText
视图和Button
,可让您将文本添加到TabOne的主体。这是使用自定义ArrayAdapter
操纵的,这可能与奇怪的行为有关。
请注意,如果我在TabOne上保留更改方向,则不会发生这种情况。这是因为我已实施OnSaveInstanceState()
和OnRestoreInstanceState()
以保存我的TabOneActivity
课程中的数据列表。
答案 0 :(得分:4)
我遇到了同样的问题 - 我找到的解决方案是为TabLayout onCreate中的第一个选项卡创建'Dummy'选项卡和活动,然后在Tab Layout Activity的onResume中隐藏'Dummy'选项卡并选择第二个标签以编程方式不太好,但可以作为第二个标签的保存状态(即第一个可见标签)。
@Override
protected void onResume() {
super.onResume();
if (getTabHost() != null && getTabHost().getTabWidget()!= null) {
getTabHost().getTabWidget().getChildAt(0).setVisibility(View.GONE);
if (getTabHost().getCurrentTab() == 0) {
getTabHost().setCurrentTab(1);
}
}
}
答案 1 :(得分:1)
您还需要在onCreate
以及OnRestoreInstanceState
中恢复您的活动状态。
我应该指出,这种技术仅适用于瞬态数据,不适用于长期数据存储。为此,您应该将数据保存到数据库或SharedPreferences
中的onPause
,然后在onResume
中检索数据。