私は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");
を呼び出すことによって、フラグメントを得ることができる実現)onBackPressed()
でユーザが戻るボタンを押すたびに。
私の質問は、は、スタックから現在の表示可能なフラグメントを直接取得する方法はありますか?
注:フラグメントタイプは、MyFragmentだけでなく、異なることにご注意ください。このようないくつかの事はbackpressにあなたの活動のフィギュアこれを助けるべきである
それは私があなたの方法でそれを行うならば、私は設定する必要があることと思われます* * fragmentTransaction.addToBackStack(タグ)**も同様です。それ以外の場合は、NullPointerExceptionが発生します。したがって、** fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount() - 1).getName(); **はタグ名を参照していません –
はい...ヌルと悪い数学((getBackStackEntryCount-1)> 0など)。私はちょっとこれをあまりにも速く書きました。また、タグなしで追加されたフラグはnullとして表示されます。 – petey
addToBackStack(null)を使用してもまだ動作しますか? – umerk44