2017-05-19 20 views
0

私は3つの断片A、B、Cを持っています、私のプロセスはAからBからCです。フラグメントonResumeを制御する方法は?

私はCに変更してBにコールバックすると、BはすぐにAに切り替えることができます。

私はonResumeのスイッチフラグメント機能をBに設定しました。

しかし、私は

と呼ばれる機能onResumeをBに変更したときに、私は私が にtransaction.addToBackStack(null);その後、私ができるCを削除することができ、それが原因となります知っているので、結果は、私はいつものフラグメント上に着陸するということです私のプロジェクトのいくつかのバグですので、私はそれを維持しようとします。

関数はCがBにコールバックするときにのみ起動しますか? ありがとうございます。

以下は私のスイッチ機能である:

private void switchFragment(Fragment fragment) { 
    FragmentManager manager = getActivity().getSupportFragmentManager(); 
    FragmentTransaction transaction = manager.beginTransaction(); 
    transaction.replace(R.id.mainFrame, fragment, null); 
    transaction.addToBackStack(null); 
    transaction.commit(); 
} 

私がフラグメントBにonResumeを追加しようとするが、それはBになり、その後、Bはすぐに戻ります。

@Override 
public void onResume() { 
    super.onResume(); 
    //go back to fragment A 
    switchFragment(NewHomepage.newInstance()); 
} 
+0

フラグメントAに行きますtrue then switchFragment –

+0

ありがとうございました、あなたのことを思い出してくれました。それは働くでしょうが、より正確な結果を得るために –

+0

を返すときに呼び出されるActivity onRestartのような、 Cの背中の中とBのOnresumeの中でそれが本当であるかどうかを確認してAに行く –

答えて

1

あなたの断片遷移コードがなければならない:上記

private void switchFragment(Fragment fragment) { 
FragmentManager manager = getActivity().getSupportFragmentManager(); 
FragmentTransaction transaction = manager.beginTransaction(); 
transaction.replace(R.id.mainFrame, fragment, null); 
transaction.addToBackStack("fragment_name_tagX"); 
transaction.commit(); 

}

、Xはあなたの断片です。上記の関数を使ってフラグメントAからCにナビゲートした後、スタックには、あなたが割り当てる 'fragment_name_tag'という名前のすべてのフラグメントがあります。あなたは今、フラグメントCからボタンを背中押したとき

@Override 
public void onBackPressed() { 

FragmentManager fm = getActivity().getSupportFragmentManager(); 
    int count = fm.getBackStackEntryCount(); 

    if (count != 0) { 
     fm.popBackStack ("fragment_name_tagB",FragmentManager.POP_BACK_STACK_INCLUSIVE); 
    } else { 
     super.onBackPressed(); 
    } 
} 

だから、それはブール値である場合は、ブールを作成し、トランザクションがCに発生したときにBでtrueに設定すると、OnResumeチェックに

+0

あなたの答えをありがとう、しかし私は断片がたくさんある、私はpopBackStackを制御する別の機能を持って、私はそれが私のプロジェクトと混同されることを恐れている。 –

+0

@徐波俊このように、どのようなイベントでフラグメントCからAにナビゲートしたいですか? –

+0

B何らかの値を入力してユーザーをCに誘導します。ユーザーがクリックしてからAに移動すると、他のユーザーのための解決策が得られます。 –

関連する問題