0

タブホストにアクティビティグループを実装しました.4つのアクティビティグループがあります.各アクティビティグループの最初のアクティビティごとに戻るボタンがあります.1つの問題に直面しています.A、B、C、Dと言う4つのアクティビティグループがあると仮定しましょう.今、アプリケーションの起動時に、アクティビティ グループ A がそこにあり、A->B から B->C に切り替えたとき、今は C というアクティビティ グループにいます。アクティビティ グループの [戻る] ボタンをクリックすると、 C.その時点で、タブホストの現在のタブは、Cに移動した前のタブホストである必要があります.それを行うための標準的な方法はありますか、それともロジックに従って配置する必要がありますか?

ありがとう

4

1 に答える 1

1

それを行うための標準的な方法はありませんが、繰り返しますが、いくつかのロジックで何でも可能です! 以前のアプリでも同様の問題がありました。最後に開いたタブのスタックを維持し、押した戻るボタンをオーバーライドしてスタックからタブを削除することで解決しました。以下にいくつかのサンプルコードを示します。
次のように変数を初期化します

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);
        }       
    }
于 2013-01-16T05:52:02.133 に答える