1

我有包含 4 个选项卡的 TabActivity。

像这样在 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() 但即使应用程序关闭并再次打开它也会加载保存的数据。

4

3 回答 3

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);

然后检查保存 SharedPreferences的prefcheck值。if (prefcheck == false)

于 2012-08-27T13:58:43.750 回答
0

您是否尝试过 onSaveInstanceState?

protected void onSaveInstanceState(Bundle icicle) {
  super.onSaveInstanceState(outState);
  icicle.putString("names", names);
}
于 2012-08-27T02:00:52.463 回答
0

你说你使用了共享偏好对吗?为什么不使用它,以便在打开选项卡时,它将共享首选项的值加一,然后 om destroy 减一,然后检查该值是否为 0,如果是,则删除您想要的所有保存首选项通过将它们设置为默认值或您想要的值。

于 2012-08-27T02:03:17.063 回答