Chúng ta hãy đi thẳng vào mã.findViewById trả về null trên <include> xem
Hoạt động Mã, phương pháp 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);
Các main.xml mã bố trí:
<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>
Vấn đề! Xem chính xác được tìm thấy, do đó, là ViewFlipper, nhưng prev_pane hoặc cur_pane hoặc next_pane không được tìm thấy, một con trỏ null được trả về. Bất kỳ ý tưởng tại sao?
Hoạt động này được gọi qua tab bằng cách sử dụng Mục đích. Tất cả các tài liệu tham khảo được giải quyết một cách chính xác, ngoại trừ của id trên bao gồm
Khi tôi kiểm tra các biến, tôi thấy nội dung của bố trí vf_inner trong mChildren
Vâng, tất cả các ô đều giống nhau, nhưng chúng cần có nội dung khác nhau. Làm thế nào tôi có thể đạt được điều này? Thực tế là tất cả các chế độ xem được bao gồm chứa hình ảnh và chế độ xem văn bản có ID. Hình ảnh vẫn tĩnh nhưng văn bản khác với tất cả các ô. – Artis
Ồ, tôi hiểu rồi. Tôi tin rằng XML bị hạn chế về vấn đề đó * (ít nhất tôi không có ý tưởng nào) *. Bạn có thể xây dựng này từ mã mặc dù. Thổi phồng ba trường hợp bố trí bằng cách sử dụng dịch vụ inflater layout, sử dụng 'setId()' trên các chế độ xem được tăng cường. Sau đó tìm kiếm ViewFlipper qua 'findViewById()' và thêm ba bố cục thông qua 'ViewFlipper.addView()'. –
Lưu ý rằng bạn cũng có thể tham khảo các con của ViewFlipper qua ['ViewFlipper.getChildAt (index)'] (http://developer.android.com/reference/android/view/ViewGroup.html#getChildAt (int)) thay vì id của họ. Ví dụ. như: 'Xem first_tab = view_flipper.getChildAt (0)'. –