android – findViewById在视图上返回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,返回一个空指针.任何想法为什么?

通过使用Intent通过选项卡调用此活动.除id之外,所有引用都被正确解析

当我检查变量时,我会发现mChildren中的vf_inner布局的内容

解决方法

这是因为< include />标签不是您的UI层级中的实际视图.
他们更多的是Android工具的复制和粘贴指令.

如果要在运行时找到窗格,请将ID添加到所包含的布局的根元素中.这样可以通过findViewById()找到它们.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...