モケラ

Tech Sheets

mokelab

ActivityのonCreate()

最終更新日:2016-08-05

onCreate()メソッドは文字通りActivityオブジェクトが生成された時に呼ばれます。Activityオブジェクトの生成自体はAndroid OSが行うため、通常のJavaクラスのようにコンストラクタで生成時の処理を記述するという手がとれません。なのでAndroidではonCreate()が生成後に呼ばれるようになっています。

このメソッドの引数はsavedInstanceStateです。これは、そのActivityオブジェクトの生成が初回の時はnullが、過去に一度Android OSによって破棄され、再生成となる時は破棄される前の状態を保持したオブジェクトが渡されます。多くの場合、このonCreate()内でActivityオブジェクトの状態を復元する処理を記述します。

このonCreate()メソッドでやるべきことは、最初のViewをセットすることです。setContentView()メソッドを呼び、最初のViewを指定します。また、Fragmentを使用してUIを構成する場合は、このonCreate()内で最初のFragmentをセットする処理を記述します。

以上を踏まえると、次のような実装になることが多いでしょう。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState == null) {
        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();

        transaction.add(R.id.container, new FirstFragment());

        transaction.commit();
    } else {
        // savedInstanceStateからActivityの状態を復元
    }
}

一覧に戻る