android - findViewByID 返回 null

标签 android android-view

首先:是的,我阅读了有关该主题的所有其他主题。不仅是来自该站点的那些...(你看,我有点沮丧)

他们中的大多数人都建议在 XML 文件中使用 android:id 而不仅仅是 id。我做到了。

我从其他人那里了解到,View.findViewByIdActivity.findViewById 的工作方式不同。我也处理过。

在我的 location_layout.xml 中,我使用:

<FrameLayout .... >
    <some.package.MyCustomView ... />

    <LinearLayout ... >
        <TextView ...
            android:id="@+id/txtLat" />
        ...
    </LinearLayout>
</FrameLayout>

在我的 Activity 中我会:

...
setContentView( R.layout.location_layout );

在我的自定义 View 类中:

... 
TextView tv = (TextView) findViewById( R.id.txtLat );

返回 null这样做,我的 Activity 工作正常。所以可能是因为 Activity.findViewByIdView.findViewById 的差异。所以我将传递给海关 View 构造函数的上下文存储在本地并尝试:

...
TextView tv = (TextView) ((Activity) context).findViewById( R.id.txtLat );

它也返回了 null

然后,我更改了我的自定义 View 以扩展 ViewGroup 而不是 View 并更改了 location_layout.xml 以让 TextView 是我的自定义 View 的直接子项,因此 View.findViewById 应该按预期工作。惊奇:它没有解决任何问题。

那我究竟做错了什么?

如有任何意见,我将不胜感激。

最佳答案

which returns null

可能是因为您调用得太早了。等到 onFinishInflate()Here is a sample project演示自定义 View 访问其内容。

关于android - findViewByID 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58078242/

相关文章:

java - 将代码从 Java 转换为 Android Studio(显示值)

android - 缩放图像大小,如 Android 应用程序中的 snapchat 过滤器图像

android - 使用 libjpegturbo 压缩一批图片时出现奇怪的结果

android - 在 Android 中以编程方式设置声音选择选项

android - 使用 clipRect - 解释

java - 平滑运动 Opengl ES 2.0

java - Android:更改原始 View 类

android - 我们什么时候知道 Activity 的 View 何时被布局

android - 如何为 View 的翻译设置动画

android - 在 ListView 中获取绝对 View 位置