2017-09-25 1 views
0

私はこのようなタグでそれをフラグメントAをadd()きたライフサイクルメソッドを呼び出すことはありません。そして、フラグメントは

fragmentTransaction.addToBackStack(special_tag); 

その後フラグメントAの上に、私は単にadd()フラグメントB、私は削除することを決定しますフラグメントB及び使用を断片化するために戻って:

activity.fragmentManager.popBackStackImmediate(special_tag, 0) 

私はフラグメントAに達すると、それはライフサイクルメソッドだ断片が再実行されないようです:ONATTACH()、onResume()、のonCreate()ECT 。

誰かがこの動作を説明し、代替案を提案できますか?この結果を引き起こしている何

  1. (私は2番目の時間を断片化するために戻ってくるとき、私は、データを「リフレッシュ」する必要がありますか)?

  2. 清潔な解決策がありますか?回避策はありますか?

更新

断片BはGuidedStepFragmentあると.replace()機能を持っていません。私はそれがfinishGuidedStepFragments()を持っていることがわかったが、それは同じように動作します(これはフラグメントのライフサイクルの関数を呼び出すことはありません)

状況(再び):

フラグメントA(シンプルフラグメント) - > .add(断片B )(GuidedStepFragment) - >popBackStackImmediate()またはfinishGuidedStepFragments()

は、私はこのような断片Bを追加します。

GuidedStepFragment.add(activity.fragmentManager, fragmentB.createInstance()) 
+0

フラグメントAで 'add()'を呼びますか?その場合は、そのフラグメントトランザクションに使用するコードを追加してください。 – Jon

+0

また、フラグメントAは 'GuidedStepFragment'ですか? – Jon

+0

@Jonが更新されました!フラグメントAは単純なフラグメントです。 – JoshuaMad

答えて

3

fragmentTransaction.add(Fragment)を使用すると、実際は何フラグメントAを削除しません。問題はフラグメントAがであり、フラグメントBの後ろにがまだ実行されていることです。フラグメントAは決して実行を停止していないので、ライフサイクルは再トリガーする必要はありません。

fragmentTransaction.replace(Fragment)を使用し、コンテナ(フラグメントA)のフラグメントをフラグメントBに置き換えることを検討してください。バック・スタックからそのトランザクションをポップすると、フラグメントAが再接続され、予想されるライフ・サイクルに従います。

更新

あなたがLeanbackにライブラリからGuidedStepFragment Sを使用しているように見えるので、これは少しトリッキーです。 GuidedStepFragmentはフードの下で実際にreplace(...)を実行しますが、フラグメントBを別のコンテナに追加しているので、上記の元の動作は適用されません。

私はleanbackに親しまれていません(通常はAndroid TVのみに使用されているので)。でも、少なくとも以下のことを行うことができます。バックスティックのサイズを把握している場合は、GuidedStepFragmentがすべてポップされたら、元のフラグメントに戻ります。たとえば、バックスタックがゼロから始まると仮定しましょう:

+0

フラグメントB(フラグメントA)にいるときに戻るボタンを使用して戻るオプションが必要な場合はどうすればよいですか? .replaceを使用すると、これはできません。 – JoshuaMad

+1

これはあなたが今やっているのとまったく同じように動作する可能性があります。あなたは、fragment.onOptionSelected()でandroid.R.id.homeをチェックする必要があります。 – ElDuderino

+0

バックスラックに 'replace(...) 'を追加すると、そのトランザクションをポップすると、逆置きが行われます。バックスタックを「最新のトランザクションを元に戻す」と考えてください。 @ElDuderinoが言ったように、あなたがすでに持っているのとまったく同じ動作です。 – Jon

関連する問題