私の活動にはいくつかの断片があります
[1], [2], [3], [4], [5], [6]
また、[戻る]ボタンが押されたときに、現在アクティブなフラグメントが [2] の場合は [2] から [1] に戻る必要があります。それ以外の場合は何もしません。
それを実行するためのベストプラクティスは何ですか?
編集:アプリケーションは[3]から[2]に戻ってはいけません...[6]
ベストアンサー1
フラグメント間を遷移する場合は、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;
}
} );