レイアウトがフラグメントを追加するアクティビティがあります:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
<fragment ... />
<TextView ... />
<ScrollView ... >
<RelativeLayout ... >
<fragment .... />
<fragment
android:id="@+id/namesFragment"
android:name="com.myapp.NamesFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/xxx"
tools:layout="@layout/fragment_names" />
</RelativeLayout>
</ScrollView>
API 18 の genymotion 仮想デバイスで開発した後、古い API を持つ実際のデバイスでエラーが発生しました。一部の変数が設定されていないため、クラッシュが発生するonCreateVeiw
before が呼び出されていないことに気付きました。onPrepareOptionsMenu
2 つの「通常の」AVD で確認しました。1 つは API 16 で、もう 1 つは API 17 です。API 17onCreateVeiw
では呼び出されることが予想されますが、API 16 では呼び出されません。
理由はありますか?API 17 はデフォルトの実行パスを強制したり、フラグメントのライフサイクルを変更したりしましたか? フラグメントがレイアウトによって作成されたときに、それを「強制」する方法はありますか?