コードに直進しましょう。findViewByIdは、<include>ビューでnullを返します。
活動コード、のonCreateメソッド
setContentView(R.layout.main);
View main_view = findViewById(R.id.main_view);
View view_flipper = main_view.findViewById(R.id.vf);
View first_tab = view_flipper.findViewById(R.id.prev_pane);
main.xmlレイアウトコード:
<ViewFlipper android:id="@+id/vf"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<include android:id="@+id/prev_pane" layout="@layout/vf_inner" />
<include android:id="@+id/cur_pane" layout="@layout/vf_inner" />
<include android:id="@+id/next_pane" layout="@layout/vf_inner" />
</ViewFlipper>
問題! メインビューが正しく検出されているため、ViewFlipperもありますが、prev_paneまたはcur_paneまたはnext_paneが見つからない場合は、NULLポインタが戻されます。なぜどんなアイデア?
このアクティビティは、インテントを使用してタブを介して呼び出されます。
を含んですべての参照は、私は、変数を検査するとき、私は<include />
タグがあなたのUIのhierachyにおける実際のビューではないためだmChildren
まあ、すべてのペインは同じですが、それぞれ異なる内容が必要です。どうすればこれを達成できますか?ファクトは、すべて含まれるビューにイメージとID付きのテキストビューが含まれています。イメージは静止したままですが、テキストはすべてのペインで異なります。 – Artis
ああ、そうだ。私は、XMLに関しては(少なくとも私には気づいていない)*という点では限られていると思う。あなたはコードからこれを構築することができます。レイアウトインフレータサービスを使ってレイアウトの3つのインスタンスを膨張させるには、膨張したビューで 'setId()'を使います。その後、 'findViewById()'を介してViewFlipperを検索し、 'ViewFlipper.addView()'で3つのレイアウトを追加します。 –
[ViewFlipper.getChildAt(index) '](http://developer.android.com/reference/android/view/ViewGroup.html#getChildAt(int))を介してViewFlipperの子を参照することもできます。彼らのidの代わりに。例えば。 'View first_tab = view_flipper.getChildAt(0)'のようになります。 –