問題タブ [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.
android - フラグメントが破棄された後にハンドラを停止する
定期的に更新するをFragment
セットアップしてListView
作成するがあります。ただし、が破壊された後も は実行されているようです。Handler
Listview
Handler
Fragment
以下はコードです。
ListView
の破棄後に を更新するFragment
と、アプリがクラッシュします。が破壊さHandler
れたときに を停止するにはどうすればよいですか? Fragment
また、アプリを一時停止した場合の影響についても知りたいですHandler
。
android - DialogFragment は、方向の変更後にそれ自体を閉じます
以前にも似たような質問がありましたが、私の場合は違います。
アプリ全体に DialogFragments があります。電話を回転させると、これ以外のすべての DialogFragments が問題なく戻ってきます。
何が起こっているのかを確認するために、ライフ サイクル コールバックにログ メッセージを散らかしました。これがシナリオです。
- 私のDialogFragmentが作成されて表示されます
- ローテーションでは、後で復元するために必要なものをバンドルに保存します。
- DialogFragment が正常に再作成されました。onCreate から onResume までが呼び出されるのでわかります。
- 再開直後、なぜか onPause、onStop、onDestroyView、onDestroy、onDetach が立て続けに呼び出されます。DialogFragment は再作成の直後に破棄されますが、その理由はわかりません。
どんな助けでも大歓迎です。DialogFragment は、結果のアクティビティを開始して写真を撮ります。これはほとんどの携帯電話でうまく機能しますが、Galaxy S3 のカメラでは方向が変化し、アクティビティが強制的に再作成されます。私はこれを気にしません。アクティビティのレクリエーションを処理する方法は知っていますが、これに遭遇したことはありません。
DialogFragment は、メインのホスティング アクティビティで、通常のフラグメントから RecyclerView アダプター コールバックを介して開始されます。
複数のフラグメントがこの DialogFragment を表示でき、関数は常に同じであるため、RecyclerView をホストするフラグメントで ChildFragmentManger を使用して DialogFragment を表示しません。どのフラグメントがそれを開始したかに関係なく、アクティビティがコールバックを受け取るようにする方がはるかに賢明でした。
フラグメントから:
メインのホスティング アクティビティがコールバックを受け取り、次のように表示します。
これらは私のライフサイクルコールバックです:
編集:問題を修正しました。DialogFragment を表示するには、アクティビティではなく、ホスティング フラグメントの ChildFragmentManager を使用する必要があります。つまり、次のように変更します。
これに:
チケットでした。同様の問題を抱えている他の人に役立つことを願っています。
android - ViewPager 内のフラグメント状態を復元する場所
短縮版:
ViewPager を持つアクティビティがあります。ViewPager の内部には 3 つのフラグメントがあります。Parcelable を実装してバンドル内に格納することで、フラグメント内にデータを格納しています。
ここで問題は、データをどこに復元するかです。(私が知っていることから) 画面を回転するたびに ViewPager がフラグメントの新しいインスタンスを作成しているため、私は混乱しています。(新しいアクティビティが作成されます -> 新しい ViewPager -> 新しいフラグメント)。私が間違っている場合は、私を修正してください。
長いバージョン:
MainActivity 内の私の ViewPager
マイ FragmentPagerAdapter
フラグメントの 1 つに状態を保存する
前もって感謝します!
アップデート:
同様の問題に投稿された他の解決策によると、setRetainInstance(true);も追加しました。私のフラグメントのonCreateViewで。そして、これは私が状態を保存して復元する方法です:
そしてonCreateViewで復元する
両方のログがトリガーされていることがわかります。データが復元されないのはなぜですか?
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) を呼び出します)。
私がどこを見ることができるかについての考え?
android - あるフラグメントから別のフラグメントまでのビューの高さを取得するには?
私は3つのタブを持っています。1 つのタブにはビューページャーがあります。ビューページャーのアイテムのビューの高さを取得して、タブで使用できるようにしたい。onResume でフラグメントにアクセスしようとすると、ビューは常に null になります。
タブのレイアウト
ビュー ページャー内のアイテムのレイアウト。画面の上からカードビューの最後までの値を取得したい
android - フラグメントのライフサイクルで onActivityCreated が呼び出されるのはいつですか?
ここでフラグメントのライフサイクルを見ていますが、 onActivityCreatedが呼び出される場所がわかりませんか?