2017-02-06 16 views
2

私は自分のアプリケーションにフラグメントを実装しました。ここで私のコードfragment_containerの断片をswichingします。フラグメントのインスタンスをバックスタックに1つだけ追加します

private void switchFragment(Fragment fragment, boolean isAddToBackStack, String tag) 
{ 
    android.support.v4.app.FragmentManager fm = getSupportFragmentManager(); 
    android.support.v4.app.FragmentTransaction ft = fm.beginTransaction(); 

    ft.replace(R.id.container, fragment, tag); 
    if (isAddToBackStack) 
     ft.addToBackStack(tag); 
    setCurrentTopFragment(Integer.parseInt(tag)); 
    ft.commit(); 
} 

私は4つのフラグメントA、B、CおよびDを持っています。このフラグメントを切り替えるには、上記の方法を使用しています。私はバックスラックでA、C、Bを持っています。再び私がfragmnet Aに切り替えると、私のバックスタックはA、C、B、Aのようになります。私が実際に欲しいのは、私が再びAに夢中になれば、このC、B、Aのようなバックスタックのシーケンスが欲しい。手段古いインスタンスをバックスタックから削除し、新しいインスタンスを追加します。

Fragment fragment = getSupportFragmentManager().getFragment(new Bundle(), TAG_KEY) 

のか、いくつかの方法getBackStackEntryCount()getBackStackEntryAtがあります

答えて

1

まず、バックスタックFragment IDによる削除する必要があり得ます。削除する必要があるフラグメントを取得した後。それをフラグメントバックスタックから削除します。

FragmentManager manager = getActivity().getSupportFragmentManager();  
FragmentTransaction trans = manager.beginTransaction(); 
trans.remove(fragment); 

は、その後、あなたはbackstackからのフラグメントを削除されていない

+0

trans.remove(フラグメント):)完了新しいフラグメントを追加することができます –

関連する問題