2016-11-16 9 views
2

現在、私はこのようなフラグメントスタックを持っています。アンドロイドでバックスタック断片の位置を変更しますか?

F1 - > F2 - > F3 - > F4 - > F5

そして活動で、私は1つのボタンB1を持っています。

私の質問は、アクティビティからB1ボタンを押したときに、以下のようにフラグメントスタックを更新する方法です。

F2 - > F3 - > F4 - > F5 - > F1。

私はaddtobackstackの時点で文字列タグを使用しています。

答えて

1

この問題は、コードでStackを使用して解決できます。フラグメントトランザクションでは、フラグメントを置き換える代わりにaddを使用する必要があります。ボタンB1を押すと、スタックからフラグメントF1をポップしなければならず、再びスタックにプッシュする必要があります。私はそれがあなたのために働くかもしれないと思った。

+0

私はこれを私のコードで試してみます。それはうまくいくように聞こえる。 –

1

私は、このコードによって、これを解決:

public void fragmentInflater(Fragment newFragment) { 
    FragmentTransaction transaction; 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    transaction = fragmentManager.beginTransaction(); 
    Fragment oldFragment = fragmentManager.findFragmentByTag(newFragment.getClass().getName()); 
    if (oldFragment == null) { 
     transaction.replace(R.id.container, newFragment, newFragment.getClass().getName()); 
     transaction.addToBackStack(null); 
    } else { 
     transaction.replace(R.id.container, oldFragment, newFragment.getClass().getName()); 
    } 
    transaction.commit(); 
} 

は、あなたのコンテナに断片を追加するために、このメソッドを使用して、あなたが望むものを達成します。また、コンテナに重複したフラグメントを追加することも防止します。

関連する問題