1. ホーム
  2. android

[解決済み] Android Fragment handle back button press [重複]。

2022-03-15 16:44:32

質問

私のアクティビティには、いくつかのフラグメントがあります。

[1], [2], [3], [4], [5], [6]

そして、戻るボタンが押されたとき、現在のアクティブなフラグメントが [2] であれば [2] から [1] に戻り、そうでなければ何もしないようにする必要があります。

どのようにすればよいのでしょうか?

EDIT : アプリケーションは[3]から[2]に戻ってはいけない...[6]。

解決方法は?

フラグメント間の遷移の際に addToBackStack() の一部として FragmentTransaction :

FragmentTransaction tx = fragmentManager.beginTransation();
tx.replace( R.id.fragment, new MyFragment() ).addToBackStack( "tag" ).commit();

より詳細な制御が必要な場合(例えば、いくつかのフラグメントが表示されているときに、バックキーを抑制したい場合など)には、以下のように OnKeyListener をフラグメントの親ビューに追加します。

//You need to add the following line for this solution to work; thanks skayred
fragment.getView().setFocusableInTouchMode(true);
fragment.getView().requestFocus();
fragment.getView().setOnKeyListener( new OnKeyListener()
{
    @Override
    public boolean onKey( View v, int keyCode, KeyEvent event )
    {
        if( keyCode == KeyEvent.KEYCODE_BACK )
        {
            return true;
        }
        return false;
    }
} );