让我们直接进入代码。
活动代码,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,返回空指针。有什么想法吗?
使用Intent通过选项卡调用此活动。除了id on on includes
之外,所有引用都已正确解析当我检查变量时,我在mChildren
中找到了vf_inner布局的内容答案 0 :(得分:8)
这是因为<include />
标记不是UI层次结构中的实际视图。
它们更像是android工具的复制和粘贴指令。
如果要在运行时查找窗格,请将ID添加到包含布局的根元素中。通过这种方式,可以通过findViewById()
找到它们。
答案 1 :(得分:0)
您可以做的一件事是将<include>
语句包装在父布局(它仍然是您的主父布局的子级)中。为这些视图提供不同的ID,以便您可以单独findViewById
。