如何解决覆盖资源时无法通过 ID 查找视图?
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/visual_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor=?android:attr/colorAccent
android:maxLines="3"
android:gravity="center_vertical" />
我已经指定了一个覆盖目录,我正在尝试使用一个类似的文件覆盖布局文件,除了一些细微的差异
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/visual_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor=?android:attr/colorPrimary
android:maxLines="3"
android:gravity="top" />
我的应用程序构建成功,但是,当我的 Java 代码尝试设置 TextView 的文本时,我在运行时看到 NullPointerException
private void setVisualText(View someView) {
View view = getLayoutInflater().inflate(R.layout.myLayout,someView,false);
TextView myText = (TextView)view.findViewById(R.id.visual_text);
myText.setText(R.string.myString);
}
异常仅发生在覆盖文件中,并且代码在没有覆盖的情况下运行良好。有谁知道为什么 myText 为空以及为什么它没有正确找到视图?我的猜测是它与 ID 有关,但我不确定为什么它不能正确解析。
解决方法
所以你有一个 TextView 和一个重叠的 TextView? 如果是这样,您不应该使用相同的 ID。 ID 只能使用一次。
你为什么打电话?
getLayoutInflater().inflate(R.layout.myLayout,someView,false);
如果你想从主 contentView 获得一个视图,你可以使用:
findViewById(id);
因为如果你想将膨胀的视图附加到你必须调用的根:
getLayoutInflater().inflate(R.layout.myLayout,true);
请尝试使用 (..true)。 通过使用上面的行,您将获得 contentView 视图。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。