私はonCreate()メソッドでインスタンス化し、アクティビティのレイアウトにFrameLayoutコンテナを追加するsingleInstanceアクティビティとフラグメントを持っています。アクティビティはログを出力する以外は何もしません。 私はandroid-support-v4のlibとandroid 2.3.3を使用しています。Androidフラグメントの単一インスタンスアクティビティのライフサイクル
私はこの設定で奇妙なライフサイクルの動作を観察しましたが、これを説明するのを手伝ってもらえないかと思います。私はライフサイクルのログを提供します:活動の
最初の呼び出し:
07-07 15:12:17.990 V/FragActivity(2358): onCreate >> [email protected]
07-07 15:12:21.010 V/FragActivity(2358): onCreate <<
07-07 15:12:21.020 V/LayoutFragment(2358): onAttach > LayoutFragment{44f467c8 #0 id=0x7f070000}
07-07 15:12:24.021 V/LayoutFragment(2358): onAttach <
07-07 15:12:24.021 V/LayoutFragment(2358): onCreate > LayoutFragment{44f467c8 #0 id=0x7f070000}
07-07 15:12:27.020 V/LayoutFragment(2358): onCreate <
07-07 15:12:27.020 V/LayoutFragment(2358): onCreateView > LayoutFragment{44f467c8 #0 id=0x7f070000}
07-07 15:12:30.022 V/LayoutFragment(2358): onCreateView <
07-07 15:12:30.030 V/LayoutFragment(2358): onActivityCreated > LayoutFragment{44f467c8 #0 id=0x7f070000}
07-07 15:12:33.030 V/LayoutFragment(2358): onActivityCreated <
07-07 15:12:33.030 V/LayoutFragment(2358): onStart > LayoutFragment{44f467c8 #0 id=0x7f070000}
07-07 15:12:36.030 V/LayoutFragment(2358): onStart <
07-07 15:12:36.040 V/FragActivity(2358): onStart > [email protected]
07-07 15:12:39.041 V/FragActivity(2358): onStart <
07-07 15:12:39.041 V/LayoutFragment(2358): onStop > LayoutFragment{44f467c8 #0 id=0x7f070000}
07-07 15:12:42.040 V/LayoutFragment(2358): onStop <
07-07 15:12:42.040 V/FragActivity(2358): onResume > [email protected]
07-07 15:12:45.041 V/FragActivity(2358): onResume <
07-07 15:12:45.041 V/LayoutFragment(2358): onStart > LayoutFragment{44f467c8 #0 id=0x7f070000}
07-07 15:12:48.040 V/LayoutFragment(2358): onStart <
07-07 15:12:48.040 V/LayoutFragment(2358): onResume > LayoutFragment{44f467c8 #0 id=0x7f070000}
07-07 15:12:51.042 V/LayoutFragment(2358): onResume <
最初の質問:なぜフラグメントのonStop()メソッドは、アクティビティの作成中ですが?フラグメントが画面に表示されます。
その後、アクティビティのonNewIntent()リフサイクルメソッドを引き起こして、インテントを実行してアクティビティを再開します。
07-07 15:13:17.220 V/LayoutFragment(2358): onPause > LayoutFragment{44f467c8 #0 id=0x7f070000}
07-07 15:13:20.220 V/LayoutFragment(2358): onPause <
07-07 15:13:20.230 V/FragActivity(2358): onPause > [email protected]
07-07 15:13:23.231 V/FragActivity(2358): onPause <
07-07 15:13:23.231 V/FragActivity(2358): onNewIntent > [email protected]
07-07 15:13:26.231 V/FragActivity(2358): onNewIntent <
07-07 15:13:26.231 V/FragActivity(2358): onResume > [email protected]
07-07 15:13:29.230 V/FragActivity(2358): onResume <
2番目の質問:なぜフラグメントのonResume()メソッドが呼び出されていないのですか?それはまだ画面に表示されます。 fragmenの
07-07 15:13:42.140 V/FragActivity(2358): onPause > [email protected]
07-07 15:13:45.143 V/FragActivity(2358): onPause <
07-07 15:13:45.143 V/FragActivity(2358): onNewIntent > [email protected]
07-07 15:13:48.144 V/FragActivity(2358): onNewIntent <
07-07 15:13:48.150 V/FragActivity(2358): onResume > [email protected]
07-07 15:13:51.151 V/FragActivity(2358): onResume <
今のライフサイクル・メソッドは全く起動されません。私の知る限りの活動やライフサイクルメソッドが手をつないで行く必要があります知っている...その後
は私が活動をもう一度再起動しますそれはどうですか?
私のヒーロー:)必要なメンバーの可視性がデフォルトに設定されているので、ソースをプロジェクトにインポートする必要はないと言えるでしょう。 srcにandroid.support.v4.appパッケージを作成し、FragmentActivityを拡張するクラスを作成してください。これはmResumedとmFragmentsへのアクセスを提供するのに十分です。 – dskinner