この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
fragmentメモ [2015/07/06 13:26] sou |
fragmentメモ [2015/07/29 09:51] (現在) sou |
||
---|---|---|---|
ライン 22: | ライン 22: | ||
=== Fragment切り替え時のIllegalStateException === | === Fragment切り替え時のIllegalStateException === | ||
- | 下記の操作NGの箇所でFragmentを操作しようとすると発生します。\\ | + | 下記の「操作NG」の箇所でFragmentを操作しようとすると発生します。\\ |
[Fragmentライフサイクル]\\ | [Fragmentライフサイクル]\\ | ||
...\\ | ...\\ | ||
ライン 28: | ライン 29: | ||
↓ 操作NG\\ | ↓ 操作NG\\ | ||
↓\\ | ↓\\ | ||
- | onViewCreated(Bundle savedInstance) 状態復元\\ | + | onViewCreated(Bundle savedInstanceState) 状態復元\\ |
onResume()\\ | onResume()\\ | ||
↓\\ | ↓\\ | ||
ライン 40: | ライン 41: | ||
↓ 操作NG\\ | ↓ 操作NG\\ | ||
↓\\ | ↓\\ | ||
- | ....\\ | + | ...\\ |
「操作OK」の箇所で操作すれば大丈夫なように見えますが、非同期(サブスレッド)でFragmentTransacitonを取り扱ってしまったり、 | 「操作OK」の箇所で操作すれば大丈夫なように見えますが、非同期(サブスレッド)でFragmentTransacitonを取り扱ってしまったり、 | ||
ライン 55: | ライン 56: | ||
http://stackoverflow.com/questions/8040280/how-to-handle-handler-messages-when-activity-fragment-is-paused | http://stackoverflow.com/questions/8040280/how-to-handle-handler-messages-when-activity-fragment-is-paused | ||
\\ | \\ | ||
+ | |||
+ | === FragmentTransaction#commit()はメインスレッドのHandlerにメッセージキューが積まれる === | ||
+ | FragmentManager#beginTransaction→(FragmentManagerImpl#beginTransaction)\\ | ||
+ | (Fragmentをいろいろ操作)\\ | ||
+ | FragmentTransaction#commit→(android.app.BackStackRecord#commit)\\ | ||
+ | (FragmentManagerImpl#enqueueAction)→(Activity#mHandlerに処理委譲)\\ | ||
+ | |||
+ | |||
=== Fragment in Fragment === | === Fragment in Fragment === | ||
FragmentでFragmentを管理するときはgetChildFragmentManager()\\ | FragmentでFragmentを管理するときはgetChildFragmentManager()\\ |