MainActivityにListFragmentがあります。フラグメントオブジェクトを設定する方法は次のとおりです。
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new MyFragment();
fragmentTransaction.replace(R.id.framecontainer, newFragment, "tag");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
問題は、ユーザーが戻るボタンを押したときに、少なくとも、を呼び出してアクションバーとメニューを変更する必要があることです。
getActionBar().setTitle(title);
getActionBar().setDisplayHomeAsUpEnabled(isEnabled);
invalidateOptionsMenu();
アクションバーの設定方法を知るために、現在どのようなフラグメントが表示されているかを知る必要があります。設定オプションを引数としてフラグメントに格納します。
String title = fragment.getArguments().getString("KEY_TITLE");
boolean isEnabled = fragment.getArguments().getBoolean("KEY_ISENABLED");
関連する質問を検索しましたが、次のように呼び出すことでフラグメントを取得できることに気付きました。
MyFragment fragment = (MyFragment) getSupportFragmentManager()
.findFragmentByTag("tag");
ただし、すべてのタグをカスタムスタックに格納し、ユーザーがで戻るボタンを押すたびにpop()onBackPressed()
を呼び出す必要があります。
だから、私の質問は、スタックから現在表示されているフラグメントを直接取得する方法はありますか?
注:MyFragmentだけでなく、フラグメントタイプも異なることに注意してください。