【发布时间】:2011-12-09 22:46:08
【问题描述】:
findViewById 在 ImageView 小部件上为我返回 null。 logcat 中没有错误,也没有任何内容表明正在发生的事情。 id 的匹配和其他图像视图正在正确设置。 Java和xml通过xml中的class标签链接,指向java中定义的类,该类是RelativeLayout的后代。
我尝试更改 R.id.more_icon1 的名称,但没有成功。尝试清洁,但没有奏效。使用调试器查看它确实只是在过去以及何时返回 mMoreIcon == null。
奇怪的是,另一个 ImageView 的工作还不错。
有人看过这个或者有什么想法吗?
Java 代码:类是 RelativeLayout 的后代
@Override
protected void onFinishInflate() {
super.onFinishInflate();
mText1 = (TextView) findViewById(R.id.text1);
mText2 = (TextView) findViewById(R.id.text2);
mIcon1 = (ImageView) findViewById(R.id.icon1);
mIcon2 = (ImageView) findViewById(R.id.icon2);
// mMoreIcon is the one that gets set as null. mIcon1 and mIcon2 work just fine.
mMoreIcon = (ImageView) findViewById(R.id.more_icon1);
}
XML 代码:
<ImageView android:id="@+id/icon1"
style="@style/SuggestionIcon1"
android:scaleType="centerInside"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
/>
<!-- This is the icon that is being returned as null -->
<ImageView android:id="@+id/more_icon1"
style="@style/MoreIcon2"
android:scaleType="centerInside"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:visibility="gone" />
<ImageView android:id="@+id/icon2"
style="@style/SuggestionIcon2"
android:scaleType="centerInside"
android:layout_toLeftOf="@id/more_icon1"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:visibility="gone" />
谢谢
【问题讨论】:
-
我的问题很愚蠢,但是您是否尝试过重新创建 R.java 文件(从 Eclipse 中删除它,它将重新创建)或为按钮使用不同的名称?我曾经在使用带有数字的 id 时遇到过同样的问题。
-
不是一个愚蠢的问题,但我有。我对其进行了 make clean ,它删除了 R.java 文件并重新创建了所有生成的文件。我也试过改名字。起初它只是 more_icon。
-
嗯。现在这是一个奇怪的问题。我尝试重新创建您的布局(除了布局是 RelativeLayout 的后代,但这应该不是问题),它对我来说很好。我真的不知道问题可能出在哪里。总是试图擦除 /bin 文件夹并重建项目。这解决了我之前的几个无法解释的问题。
-
对我来说,这是一个错误的参考问题,所以我实际上并没有在正确的父级下寻找视图。复制/粘贴代码的工件。
标签: android android-layout android-widget