1

4 つのタブを保持する TabActivity があります。

このようなタブホストアクティビティで作成されたタブ

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

すべてのタブで、ユーザーが何らかの作業を行い、結果がタブに表示されます。
問題は、2 番目のタブに切り替えてから 1 番目のタブに戻ると、すべての結果が失われ、タブが再度作成されることです。

注意 : 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);

次に、prefcheck値を確認しif (prefcheck == false)て SharedPreferences を保存します。

于 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

共有設定を使用したとおっしゃっていますか?タブを開くと、共有設定の値が1つ増え、om destroyがそれを減らしてから、値が0かどうかを確認します。値が0の場合は、必要なすべての保存設定が削除されます。それらをデフォルト値または必要な値に設定します。

于 2012-08-27T02:03:17.063 に答える