android - findViewById 在 <include> View 上返回 null

标签 android android-layout viewflipper

让我们直接开始编码。

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/

相关文章:

android - Android 中 eng 和 user-debug 构建的区别

android - 如何为编辑文本添加模糊阴影?

android - Viewflipper 如何处理 Android 中的后退按钮?

java - Android:抽屉导航 Z 索引不正确

java - 为什么在使用 ContextWraper.getDir 创建目录时出现 app_

Android AlarmManager 不准确

android - 如何在 android 中像 3d 动画一样翻转图像?

android - 指定的 child 已经有一个 parent 。您必须先在 child 的 parent 上调用 removeView()

android linearlayout 和 textview wrap_content 导致剪切最后一行文本

java - ViewFlipper:使用随机子项以随机时间间隔翻转