私はAndroid用のプログラミングを読んでいますが、本には次のように書かれています:
以前に作成されたフラグメントにまだ関連付けられている間に、アクティビティ onCreate が呼び出される可能性は十分にあります。onCreate メソッドが呼び出されるたびに新しいフラグメントを追加するだけで、フラグメントがリークします。これを防ぐために、コード例ではフラグメント マネージャーのタグ付け機能とロケーション機能を利用しています。
コードは次のとおりです。
super.onCreate( state);
setContentView( R.layout.main);
FragmentManager fragMgr = getFragmentManager();
FragmentTransaction xact = fragMgr.beginTransaction();
if (null = = fragMgr.findFragmentByTag( FRAG1_TAG)) {
xact.add( R.id.date_time, new DateTime(), FRAG1_TAG);
}
xact.commit();
onCreateでこれが必要な理由を誰かが説明できますか?
フラグメントのライフサイクルは常にアクティビティのライフサイクルに依存し、アクティビティの onCreate はアクティビティが作成されるときに常に呼び出される (つまり、常に死んでいる) と考えていました。
フラグメントのライフサイクルがアクティビティに結び付けられている場合、アクティビティが終了するとすべてのフラグメントが終了するので、アクティビティで onCreate が呼び出されるとフラグメントは常に null になるのではないでしょうか?
例外はありますか、または誰かが私の考えが正しくない理由を説明できますか (実際には正しくないと思いますが、理由がわかりませんか?)