7

replace FragmentTransactionを使用してa を元に戻したいaddToBackStack():

FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();         
Fragment scheduleFragment = new ScheduleFragment();     
fragmentTransaction.replace(R.id.content_container, scheduleFragment, "scheduleFragment");
fragmentTransaction.addToBackStack("scheduleFragment");
fragmentTransaction.commit();

その後、戻るボタンをクリックしても何も起こりません。

ドキュメントから、トランザクションを元に戻すことになっています。

私は何が欠けていますか?

4

4 に答える 4

4

試してみてくださいfragmentTransaction.addToBackStack(null) パラメータは、バック状態のオプションの名前です。フラグメントのオプションaddToBackStack()のタグであるメソッドでタグを使用しないでください。replace()詳細については、こちらをご覧ください。

于 2013-08-19T03:21:14.130 に答える
2

しばらく経ちましたが、これが誰かの助けになることを願っています。

fragmentTransaction.addToBackStack(null)拡張している場合は機能しませんAppCompatActivity。でうまく機能しActivityます。理由がわかりませんでした。

于 2016-04-02T12:47:30.243 に答える
0

私は自分のFragmentスタックを実装しました:

public Fragment addFragmentToStack(Fragment fragment){
    if(MyApplication.fragmentStack.size()>20){
        MyApplication.fragmentStack.remove(0);
    }
    return MyApplication.fragmentStack.push(fragment);
}   

public void onBackPressed() {
        if (MyApplication.fragmentStack.size() > 0) {
            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            ft.replace(R.id.content_container, MyApplication.fragmentStack.pop());
            ft.commit();
        }
        else{
            finish();
        }
}
于 2013-08-19T04:32:11.030 に答える