問題タブ [fragment-lifecycle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
19355 参照

android - フラグメントが破棄された後にハンドラを停止する

定期的に更新するをFragmentセットアップしてListView作成するがあります。ただし、が破壊された後も は実行されているようです。HandlerListviewHandlerFragment

以下はコードです。

ListViewの破棄後に を更新するFragmentと、アプリがクラッシュします。が破壊さHandlerれたときに を停止するにはどうすればよいですか? Fragmentまた、アプリを一時停止した場合の影響についても知りたいですHandler

0 投票する
0 に答える
654 参照

android - DialogFragment は、方向の変更後にそれ自体を閉じます

以前にも似たような質問がありましたが、私の場合は違います。

アプリ全体に DialogFragments があります。電話を回転させると、これ以外のすべての DialogFragments が問題なく戻ってきます。

何が起こっているのかを確認するために、ライフ サイクル コールバックにログ メッセージを散らかしました。これがシナリオです。

  1. 私のDialogFragmentが作成されて表示されます
  2. ローテーションでは、後で復元するために必要なものをバンドルに保存します。
  3. DialogFragment が正常に再作成されました。onCreate から onResume までが呼び出されるのでわかります。
  4. 再開直後、なぜか onPause、onStop、onDestroyView、onDestroy、onDetach が立て続けに呼び出されます。DialogFragment は再作成の直後に破棄されますが、その理由はわかりません。

どんな助けでも大歓迎です。DialogFragment は、結果のアクティビティを開始して写真を撮ります。これはほとんどの携帯電話でうまく機能しますが、Galaxy S3 のカメラでは方向が変化し、アクティビティが強制的に再作成されます。私はこれを気にしません。アクティビティのレクリエーションを処理する方法は知っていますが、これに遭遇したことはありません。

DialogFragment は、メインのホスティング アクティビティで、通常のフラグメントから RecyclerView アダプター コールバックを介して開始されます。

複数のフラグメントがこの DialogFragment を表示でき、関数は常に同じであるため、RecyclerView をホストするフラグメントで ChildFragmentManger を使用して DialogFragment を表示しません。どのフラグメントがそれを開始したかに関係なく、アクティビティがコールバックを受け取るようにする方がはるかに賢明でした。

フラグメントから:

メインのホスティング アクティビティがコールバックを受け取り、次のように表示します。

これらは私のライフサイクルコールバックです:

編集:問題を修正しました。DialogFragment を表示するには、アクティビティではなく、ホスティング フラグメントの ChildFragmentManager を使用する必要があります。つまり、次のように変更します。

これに:

チケットでした。同様の問題を抱えている他の人に役立つことを願っています。

0 投票する
2 に答える
14743 参照

android - ViewPager 内のフラグメント状態を復元する場所

短縮版:

ViewPager を持つアクティビティがあります。ViewPager の内部には 3 つのフラグメントがあります。Parcelable を実装してバンドル内に格納することで、フラグメント内にデータを格納しています。

ここで問題は、データをどこに復元するかです。(私が知っていることから) 画面を回転するたびに ViewPager がフラグメントの新しいインスタンスを作成しているため、私は混乱しています。(新しいアクティビティが作成されます -> 新しい ViewPager -> 新しいフラグメント)。私が間違っている場合は、私を修正してください。

長いバージョン:

MainActivity 内の私の ViewPager

マイ FragmentPagerAdapter

フラグメントの 1 つに状態を保存する

前もって感謝します!

アップデート:

同様の問題に投稿された他の解決策によると、setRetainInstance(true);も追加しました。私のフラグメントのonCreateViewで。そして、これは私が状態を保存して復元する方法です:

そしてonCreateViewで復元する

両方のログがトリガーされていることがわかります。データが復元されないのはなぜですか?

0 投票する
1 に答える
1343 参照

android - ViewPager を保持する Fragment のライフサイクル

私は、私を困惑させている何かを持っています。3 つのフラグメント (左右にスワイプするため) を含む ViewPager を持つフラグメント (フラグメント A) があります。したがって、別のフラグメント内でonBackPressed()メソッドでgetFragmentManager().popBackStack()呼び出しを実行すると、フラグメント A が再び表示され (サブフラグメントの ViewPager を使用)、これが目的の状態になります。ただし、Fragment A または ViewPager 内には、Fragment A/ViewPager が再び表示されることを示すメソッドはありません。

Fragment ライフサイクル ( http://developer.android.com/guide/components/fragments.html ) で参照されているどのフラグメント メソッドも、「フラグメントがバック スタックからレイアウトを返す」場合に呼び出す必要がないか、いずれかのメソッドOnPageChangeListener 内で呼び出されます (はい、フラグメント A の onCreateView 内で viewPager.setOnPageChangeListener(this) を呼び出します)。

私がどこを見ることができるかについての考え?

0 投票する
0 に答える
242 参照

android - あるフラグメントから別のフラグメントまでのビューの高さを取得するには?

私は3つのタブを持っています。1 つのタブにはビューページャーがあります。ビューページャーのアイテムのビューの高さを取得して、タブで使用できるようにしたい。onResume でフラグメントにアクセスしようとすると、ビューは常に null になります。

タブのレイアウト

ビュー ページャー内のアイテムのレイアウト。画面の上からカードビューの最後までの値を取得したい

0 投票する
1 に答える
3752 参照

android - フラグメントのライフサイクルで onActivityCreated が呼び出されるのはいつですか?

ここでフラグメントのライフサイクルを見ていますが、 onActivityCreatedが呼び出される場所がわかりませんか?