2016-12-12 46 views
1

アクティビティAI & BをアクティビティAIで管理していますが、1つのケースでは以下のようになります。 アクティビティにフラグメント1から2から3から4それから4番目の断片から私は今私が欲しいのは、活動のBボタン4を押した後にBの活動に行きます。前のアクティビティの断片バックスタックを維持する

私はからのアクティビティBに行くよときに私はここに点で最大の成功を得たが、バックプレスで

boolean isPopFragment = getSupportFragmentManager().getBackStackEntryCount() > 0 ? true : false; 
    if (isPopFragment) { 
     getSupportFragmentManager().popBackStack(); 
    } 

を断片を置換し、スタック

private void changeFragment(Fragment fragment) { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
    fragmentManager.beginTransaction().replace(R.id.act_home_fl_container, fragment).commit(); 
} 

をバックに管理するには、以下の機能を使用していますアクティビティAに戻ると、アクティビティAのフラグメントのスタックを戻すことができません。

どのように起動するのかわかりません。

+0

2つのアクティビティに対して2つのスタックを維持する必要があります。同じアクティビティでフラグメントを管理することはできますが。このgithubプロジェクトを見ることをお勧めします。 [https://github.com/JetradarMobile/multibackstack]。これらの人たちはとても良い実装をしました。 – Wizard

答えて

0

あなたは、あなたの活動の内部onBackPressedを上書き上にあるフラグメントをチェックし、あなたが望むように何をすべきかを決定することができます

@Override 
public void onBackPressed() 
{ 
    // code here 
    super.onBackPressed(); // check if you need this, depends on your needs 
} 
0

利用フラグメント

public static void addFragment(final Fragment newFragment, final Fragment hideFragment) { 
    final FragmentManager fragmentManager = getFragmentManager(); 
    final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.hide(hideFragment); 
    fragmentTransaction.add(R.id.activity_home_container, newFragment, newFragment.getClass().getSimpleName()); 
    fragmentTransaction.addToBackStack(hideFragment.getClass().getSimpleName()); 
    fragmentTransaction.commitAllowingStateLoss(); 
} 

newFragmentを変更するには、このコードを "追加したいフラグメント "
hideFragment"コンテナにあるフラグメント "

関連する問題