0

backstackに新しい/異なるフラグメントを追加しますフラグメントを追加:私の断片の一つでAndroidのは、私がメニューで選択されている新しい方のフラグメントとフラグメントコンテナを交換しますメニュー項目をクリックしたときに、ナビゲーションドロワーのセットアップを持っている

public void addFragment(Fragment fragment, int id) { 
     if (fragment != null) { 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

      if (fragmentManager.getFragments() == null) { 
       fragmentTransaction.replace(R.id.fragment_container, fragment, fragment.getClass().getSimpleName()) 
         .commit(); 
      } else { 
       fragmentTransaction.replace(R.id.fragment_container, fragment, fragment.getClass().getSimpleName()) 
         .addToBackStack(Integer.toString(id)) 
         .commit(); 
      } 
     } 
    } 

NewFragment())データ挿入フォームがあり、そのメニュー項目のIDがnav_newあります。送信ボタンをクリックすると、addFragment方法は、私のアプリ内の別の断片(StartFragment())にユーザーを指示するために呼び出されます。

mainActivity.addFragment(new StartFragment(), R.id.nav_new); 

しかし、上記backstackへのデータ挿入フォームを追加します。ユーザーがフォームを提出すると、投稿フォームに戻るために戻ることはできません。代わりに、入力した情報の要約を含む別のフラグメント(SubjectInfoFragment())に移動したいと思っています

これをサポートする方法はonNavigationItemSelectedです。 nav_newメニュー項目をクリックすると、ユーザーが既に情報を入力したかどうかがチェックされます。そうでない場合は、NewFragmentに移動してフォーム情報を入力するトランザクションが発生します。彼らが持っている場合は、SubjectInfoFragment

は、私が提出フォーム上のStartFragmentにそれらを指示する必要が彼らの前に入力した情報の要約を表示する代わりに示されているが、その後古いフォームフラグメントは望ましくないですbackstackに追加され

フォーム提出後に、フォームボタンをフォーム送信ページに戻すのではなく、完全に新しいフラグメント(SubjectInfoFragment)に戻すようにフラグメントトランザクションを処理するにはどうすればよいですか?

最悪の場合のシナリオでは、まったく新しいフラグメントをバックスタックに追加できない場合、ユーザーが少なくともフォーム提出ページに戻るのを防ぐにはどうすればよいですか?

答えて

0

あなたはbackstackするフラグメントを追加するには、次の行を使用する必要があります。

getFragmentManager.addToBackStack(tag or null); 
+0

addToBackStack'はしかし、バックスタックに追加されるのフラグメントを防ぐことはできません 'への呼び出しでのメッセージは含みません... – Simon

+0

あなたは何をしたいですか?バックスタックにフラグメントを追加したいのですか? –

+0

いいえ、私は質問で私が望んでいたものを明確に指定したと思いました。バックスタックに、私が現在使っているものではなく、別のフラグメントを追加したいと思います。この方法では、ユーザーは戻るボタンを押してフォームサブミッションフラグメントに戻ることはできません。代わりにサマリーフラグメントが表示されます – Simon

関連する問題