我有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()但它会加载保存的数据,即使应用程序已关闭并再次打开。
答案 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);
然后检查prefcheck
值if (prefcheck == false)
保存SharedPreferences。
答案 1 :(得分:0)
你试过onSaveInstanceState吗?
protected void onSaveInstanceState(Bundle icicle) {
super.onSaveInstanceState(outState);
icicle.putString("names", names);
}
答案 2 :(得分:0)
你说你使用共享偏好吗?为什么不这样做,以便在打开选项卡时,它将共享首选项的值递增1,然后om销毁它,然后检查该值是否为0,如果是,则删除所需的所有保存首选项通过将它们设置为默认值或所需的值。