让我们直接开始编码。
Activity 代码,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,返回空指针。有什么想法吗?
此 Activity 是使用 Intent 通过选项卡调用的。所有引用都被正确解析,除了 id 上的 includes
当我检查变量时,我在 mChildren 中找到 vf_inner 布局的内容
最佳答案
那是因为 <include />
标签不是 UI 层次结构中的实际 View 。
它们更像是 android 工具的复制和粘贴指令。
如果您想在运行时查找 Pane ,请将 ID 添加到包含的布局的根元素中。这样可以通过 findViewById()
找到它们.
关于android - findViewById 在 <include> View 上返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8538046/