Android如何在选项卡之间切换时保存选项卡状态

时间:2012-08-27 00:13:48

标签: android android-tabhost

我有TabActivity,它包含4个标签。

在tabhost活动中创建的标签

TabSpec firstTabSpec = tabHost.newTabSpec("tid1");
Intent send_names_intent1 = new Intent(this,tab1.class);

//here is some data I receive it from previous activity 
//and want to send them to the tab
send_names_intent1.putExtra("names", names);        
send_names_intent1.putExtra("check", test1);

firstTabSpec.setIndicator("Kingdom I").setContent(send_names_intent1);
tabHost.addTab(firstTabSpec);

在每个标签中,用户进行一些工作,结果将显示在选项卡中,
问题是当切换到第二个选项卡然后返回第一个选项卡时,所有结果都将消失,并且将再次创建选项卡。

注意:我尝试使用getsharedprefrences()但它会加载保存的数据,即使应用程序已关闭并再次打开。

3 个答案:

答案 0 :(得分:2)

您可以使用布尔值boolean test;和int值int last=0然后使用此方法

tabHost.setOnTabChangedListener(new OnTabChangeListener(){
        @Override
        public void onTabChanged(String tabId) {
            int currenttab = tabHost.getCurrentTab();
            if (currenttab != last){
                test[last] = false;
                send_names_intent [last].putExtra("check", test[last]);
                last = currenttab;
            }

        }                                           
    });

使用此方法时,tab1.class

中会有一个布尔值
Intent names_intent = getIntent();                  
prefcheck = names_intent.getBooleanExtra("check", false);

然后检查prefcheckif (prefcheck == false)保存SharedPreferences。

答案 1 :(得分:0)

你试过onSaveInstanceState吗?

protected void onSaveInstanceState(Bundle icicle) {
  super.onSaveInstanceState(outState);
  icicle.putString("names", names);
}

答案 2 :(得分:0)

你说你使用共享偏好吗?为什么不这样做,以便在打开选项卡时,它将共享首选项的值递增1,然后om销毁它,然后检查该值是否为0,如果是,则删除所需的所有保存首选项通过将它们设置为默认值或所需的值。