切换选项卡和方向时Android应用程序丢失状态

时间:2010-12-10 19:50:34

标签: android tabs orientation state

问题:我有一个带标签的Android应用程序,每当我按照这些(无可置疑的奇怪)步骤时,我就会丢失TabOne中的内容:

  1. 更改为其他标签。
  2. 将方向切换为横向。
  3. 将方向切换回肖像。
  4. 改回TabOne。
  5. Android应用程序说明:我有一个非常简单的Android应用程序,其中有三个使用google's TabLayout tutorial构建的选项卡,我们称之为TabOne,TabTwo和TabThree。只有TabOne有任何内容:一个简单的EditText视图和Button,可让您将文本添加到TabOne的主体。这是使用自定义ArrayAdapter操纵的,这可能与奇怪的行为有关。

    请注意,如果我在TabOne上保留更改方向,则不会发生这种情况。这是因为我已实施OnSaveInstanceState()OnRestoreInstanceState()以保存我的TabOneActivity课程中的数据列表。

2 个答案:

答案 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中检索数据。