1

私は次のことをしたいです。最初と 2 番目の 2 つのフラグメントがあります。それらの間の移行を行う必要があります。最初のフラグメントから 2 番目のフラグメントに移動すると、最初にスタックに格納されます。[戻る] ボタンをクリックすると、2 番目のフラグメントが削除され、スタックから最初のフラグメントが返されます。ここでも、2 番目のフラグメントに移動できません。削除されています。どうすればこの問題を解決できますか?

メイン アクティビティ (Fragment1 のコールバック):

@Override
public void onNavigate() {
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    Fragment1 newFragment1 = (Fragment1) getFragmentManager().findFragmentByTag("frag_1");
    Fragment2 newFragment2 = (Fragment2) getFragmentManager().findFragmentByTag("frag_2");
    ft.replace(R.id.main, newFragment2);
    ft.remove(newFragment1);
    ft.addToBackStack(null);
    ft.commit();
}

動的に追加したフラグメント:

    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.add(R.id.main, new Fragment1(), "frag_1");
    ft.add(R.id.main, new Fragment2(), "frag_2");
    ft.commit();
4

1 に答える 1

0

私はこの問題を解決しました:)。最初のフラグメントを非表示にして、トランザクションをバック スタックに追加します。[戻る] ボタンをクリックすると、フラグメントに戻ります

@Override 
public void onNavigate() { 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    Fragment1 newFragment1 = (Fragment1) getFragmentManager().findFragmentByTag("frag_1"); 
    ft.hide(newFragment1); 
    ft.addToBackStack(null); 
    ft.commit(); 
}
于 2013-07-12T08:21:31.853 に答える