2017-07-27 10 views
0

私は今、3つの断片を持っています。 1つはメインフラグメント2つ目はプロファイルフラグメントで、もう1つはプロファイル編集フラグメントです。今次のフラグメントから最後にポップアップしたフラグメントにナビゲートするにはどうすればよいですか?

 fragmentManager = getSupportFragmentManager(); 
    DashboardFragment fragment1 = new DashboardFragment(); 
    Bundle bundle = new Bundle(); 
    fragment1.setArguments(bundle); 
    fragmentManager.popBackStack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE); 
    fragmentManager.beginTransaction().replace(R.id.frame, fragment1, "DASHBOARD_FRAGMENT").commitAllowingStateLoss(); 

私はこのようなフラグメントをプロファイルへのナビゲートしています主なフラグメントから:

MainFragmentは、このように呼ばれています。

私はこのような編集フラグメントをプロファイルへのナビゲートしていたプロファイルフラグメントから今
   fragmentManager = ((MainActivity)(mContext)).getSupportFragmentManager(); 
       ProfileFragment fragment1 = new ProfileFragment(); 
       Bundle bundle = new Bundle(); 
       fragment1.setArguments(bundle); 
       fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
       fragmentManager.beginTransaction().replace(R.id.frame, fragment1, "PROFILE_FRAGMENT").addToBackStack("B").commit(); 

fragmentManager = getActivity().getSupportFragmentManager(); 
      ProfileEditFragment fragment1 = new ProfileEditFragment(); 
      Bundle bundle = new Bundle(); 
      fragment1.setArguments(bundle); 
      fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
      fragmentManager.beginTransaction().add(R.id.frame, fragment1, "PROFILE_EDIT_FRAGMENT").addToBackStack("C").commit(); 

今ナビゲーションが編集フラグメントをプロファイルするフラグメントをプロファイリングし、プロファイルの断片から、メインの断片からのようなものです。

私はプロファイル編集フラグメントから戻ると、ブランクを示すメインフラグメントに直接行きます。プロファイル編集フラグメントから押されたバックのプロファイルフラグメントに行き、プロファイルフラグメントのバックプレスでメインフラグメントに戻ります。

私は主なアクティビティでonBackPressedメソッドを持っていますが、うまく機能しません。

@Override 
public void onBackPressed() { 

    // Do nothing if the back button is disabled. 
    if (!mBackPressCancelled) { 


     if (getFragmentManager().getBackStackEntryCount() > 0) { 
      getFragmentManager().popBackStackImmediate(); 
     } 
     else { 
      super.onBackPressed(); 

     } 
    } 
} 

何が問題になりますか?助けてください。ありがとうございました..

答えて

2

バックスタックにもDashboardFragmentを追加する必要があります。

さらに、onBackPressed()のif条件を変更してください。したがって、少なくとも1つのフラグメントがバックスタックに保持されます。

if (getFragmentManager().getBackStackEntryCount() > 1) { 
     getFragmentManager().popBackStackImmediate(); 
} else { 
    super.onBackPressed(); 
} 

また、replace()前にすべてのpopBackStack()を削除します。フラグメントをバックスタックに保持する必要がある場合、この行は必要ありません。

+0

まだ私はメインの断片に行きます、それは空です。私は代わりにフラグメントを追加しようとしましたが、動作しませんでした。 – Sid

+0

申し訳ありません。 'replace()'の前に 'popBackStack()'をすべて削除する必要があると言います。 – BakaWaii

関連する問題