モケラ

Tech Sheets

mokelab

戻るボタンで1つ前の画面に戻れるようにする

最終更新日:2020-07-10

Activityによる遷移では、端末の戻るボタンで1つ前の画面に戻ることができました。Fragmentでは、BackStackという仕組みを利用して、端末の戻るボタンで1つ前の画面に戻れるようにできます。

やり方は簡単です。Fragmentのreplace時、FragmentTransactionオブジェクトのaddToBackStack()メソッドを呼ぶだけです。このメソッドは、今のFragmentの状況(どのidにどのFragmentが貼り付けられているか)をBackStackと呼ばれるスタックに積みます。このBackStackに状態が積まれているとき、端末の戻るボタンを押すと、1つ前の状態、つまり1つ前の画面に戻れる という仕組みです。

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View root = inflater.inflate(R.layout.fragment_title, container, false);
    View button = root.findViewById(R.id.button_next);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            FragmentManager manager = getFragmentManager();
            FragmentTransaction transaction = manager.beginTransaction();
            transaction.addToBackStack("");
            transaction.replace(R.id.container, NextFragment.newInstance("myName"));

            transaction.commit();
        }
    });
    return root;
}

一覧に戻る