2

私はアンドロイドアプリを開発しています。タブ ナビゲーション モードのアクションバーと、frameview コンテナーで置き換えられるフラグメントを呼び出す 3 つのタブがあります。

私の問題は、ユーザーがあるタブでバックスタックを生成してから別のタブに切り替えた場合、この状態で戻るボタンが押された場合、バックスタックはポップされますが、タブは変更されず、フラグメントが重複することにつながります(Tab1 に属するバックスタック フラグメントはポップ/追加されますが、Tab2 はまだ選択されており、そのフラグメントも選択されています)。

フラグメントのバックスタックと同じように、アクションバーのタブを戻るボタンに反応させる方法はありますか?

4

3 に答える 3

2

addBackStack("MainTab");で選択した名前()を使用してタブをバックスタックに追加し、アクティビティTabListenerのメソッドをオーバーライドしてonBackPressed()、バックスタックがポップされたときにタブがいつ変更されるかを認識します(トップBackStackEntryの名前を取得することにより) )そしてactionBar.setSelectedNavigationItem(position)それに応じて使用されます。

于 2012-10-02T14:57:21.527 に答える
1

を使用する代わりに、アクティビティaddToBackStack()のメソッドをオーバーライドしてonBackPressed()、戻るキーの動作をカスタマイズします。

于 2012-10-01T17:24:56.880 に答える
0

これは私にとってはうまくいきます:)

@Override
public void onBackPressed() {
    if (viewPager.getCurrentItem() == 0) {
        super.onBackPressed();
    }else {
        viewPager.setCurrentItem(0);
    }
}
于 2019-08-17T06:55:51.120 に答える