それを行うための標準的な方法はありませんが、繰り返しますが、いくつかのロジックで何でも可能です! 以前のアプリでも同様の問題がありました。最後に開いたタブのスタックを維持し、押した戻るボタンをオーバーライドしてスタックからタブを削除することで解決しました。以下にいくつかのサンプルコードを示します。
次のように変数を初期化します
tabIdStack = new Stack<Integer>();
openedTab = 0;
次に、onTabChanged()
@Override
public void onTabChanged(String tabId) {
if (!backButtonPressed) {
if (tabIdStack != null) {
if (tabIdStack.size() == noOfTabs)
tabIdStack.remove(0);
tabIdStack.push(openedTab);
openedTab = tabHost.getCurrentTab();
}
}
backButtonPressed = false;
そして、あなたもオーバーライドする必要がありますonBackPressed()
@Override
public void onBackPressed()
{
backButtonPressed = true;
if (tabIdStack.size() == 0)
this.finish();
else {
tabHost.setCurrentTab(tabIdStack.get(tabIdStack.size() - 1));
tabIdStack.remove(tabIdStack.size() - 1);
}
}