1

基本的に、アプリを終了したときに最後に開いたタブをアプリで「記憶」しようとしています。次に起動したときにそのタブで開くようにします。

したがって、メインアクティビティとしてタブホストがあり、5つのタブアクティビティのそれぞれでメソッドを呼び出します。

private void mSetTab(){
    SharedPreferences myPrefs=this.getSharedPreferences("myPrefs",MODE_WORLD_READABLE);
    SharedPreferences.Editor prefsEditor = myPrefs.edit();
    prefsEditor.putInt("tabToggle", X);
}

ここで、Xはタブに応じて0〜4です。

私のmainActivityには次のものがあります。

tabHost.setCurrentTab(mCheckTab());

どの呼び出し:

private int mCheckTab() 
{
    SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
    int whichTab = myPrefs.getInt("tabToggle",0);

    return whichTab;
}

これはすべて、ホームキーを使用すると正常に機能するように見えますが、プログラムを終了するために戻るボタンを使用すると、常に0が読み込まれるように見えます。

これを回避する方法はありますか?

乾杯

フィル

4

2 に答える 2

0

commit()変更を加えた後、prefsEditorを呼び出すのを忘れましたか?

于 2011-04-03T06:47:22.073 に答える
0

を呼び出す必要がありますcommit。各エディターメソッドはエディターを順番に返すため、これを行うための優れた方法があります。

SharedPreferences myPrefs =
    this.getSharedPreferences("myPrefs",MODE_WORLD_READABLE);
myPrefs.edit().putInt("tabToggle", X).commit();

アプリが閉じられておらず、バックグラウンドで実行されていたため、ホームキーが機能しているように見えた可能性があります。

于 2011-04-03T07:01:58.240 に答える