Android - Как справиться с кнопкой «Назад», закрывающей мое приложение и перезапускающей на правой вкладке

В основном я пытаюсь «запомнить» в своем приложении, какая вкладка была открыта в последний раз, когда приложение было закрыто. Чтобы он открывался на этой вкладке при следующем запуске.

Итак, у меня есть tabhost в качестве основного действия, и в каждом из пяти действий с вкладками я вызываю метод:

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

Где X 0-4 в зависимости от вкладки.

В моей основной деятельности у меня есть:

tabHost.setCurrentTab(mCheckTab());

Что вызывает:

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

    return whichTab;
}

Кажется, все это работает нормально, когда используется клавиша «Домой», но когда кнопка «Назад» используется для выхода из программы, кажется, что всегда загружается 0.

Любые идеи, как мне обойти это?

Ваше здоровье

Фил


person Phil    schedule 03.04.2011    source источник


Ответы (2)


Вам нужно позвонить commit. Есть хороший способ сделать это, так как каждый из методов редактора по очереди возвращает редактор:

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

Домашняя клавиша, вероятно, работала, потому что ваше приложение не закрывалось и все еще работало в фоновом режиме.

person Matthew Willis    schedule 03.04.2011
comment
Спасибо, Мэтт, я знал, что это будет что-то очевидное! :) - person Phil; 03.04.2011

Вы забыли вызвать commit() в вашем prefsEditor после внесения изменений?

person EboMike    schedule 03.04.2011
comment
В моей основной деятельности все еще что-то не так: tabHost.setCurrentTab(mCheckTab()); } private int mCheckTab() { SharedPreferences myPrefs = this.getSharedPreferences(myPrefs, MODE_WORLD_READABLE); int whichTab = myPrefs.getInt (tabToggle, 0); вернуть какойTab; } Но кажется, что всегда возвращается 0, значит, приложение запускается на первой вкладке? Любые идеи? - person Phil; 04.04.2011