8

ヘッダーバー(メニューのようなもの)と4つのフラグメント(MAIN、A、B、C)があり、そこからMAINをバックスタックの「メイン/ルート」フラグメントにする必要があります。

私が抱えている問題は、メニューを介したユーザーがたとえばMAIN> A> B> Cに移動する場合です。単にバックスタックを使用すると、逆の順序になります。ユーザーがこれらの3つのうちのいずれかにどのように移動したかに関係なく、MAINに戻るには戻るボタンが必要です。

ここに画像の説明を入力してください

私の現在のコード(これは間違っています。MAINにな​​いときにアプリを終了し、現在のフラグメントが他の非MAINフラグメントから切り替えられます)は次のようになります。

private void SwitchFragment(Fragment pFragment)
{
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.main_fl_fragmentcontainer, pFragment);
    if (_CurrentFragment == _Frag_Main)
        ft.addToBackStack(null);
    ft.commit();

    _CurrentFragment = pFragment;
}
4

1 に答える 1

4

スタックには最大2つのフラグメントが含まれている必要があります

メインが表示されますメインがonBackstack/AorBorCが表示されます。ユーザーが戻るをクリック==>メインが表示されます。ユーザーが戻るをクリック==>アプリケーションの終了

A / B / Cが同じビューに表示されていると思いますので、この場合は

ユーザーがメニューをクリックするときは、A / B / Cが現在表示されているかどうかを確認し、ユーザーが選択したものに置き換える必要があります。

private void displayFragment(Fragment pFragment) {
    Fragment fr = getSupportFragmentManager()
            .findFragmentById(R.id.main_fl_fragmentcontainer);        
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.main_fl_fragmentcontainer, pFragment);
    if (_CurrentFragment == _Frag_Main) {
        ft.addToBackStack(null);
    }
    ft.commit();    
    _CurrentFragment = pFragment;
}

OnBackPressedアクティビティのメソッドをオーバーライドできます。

于 2013-01-29T17:25:56.653 に答える