【发布时间】:2023-04-01 09:10:01
【问题描述】:
我不明白为什么 findViewById 返回错误的元素,这里是类:
public class EventDetailsFragment extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.event_details);
Log.d("First", findViewById(R.id.tuxtView1).getClass().toString());
Log.d("Second", findViewById(R.id.tuxtView2).getClass().toString());
Log.d("Third", findViewById(R.id.imageView1).getClass().toString());
}
}
这里是xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/green"
android:orientation="horizontal"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp">
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="0dp"
android:layout_height="175dp"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:background="#fff"
android:gravity="right" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="110dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@drawable/ic_event_image" />
<TextView
android:id="@+id/tuxtView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginTop="10dp" />
<TextView
android:id="@+id/tuxtView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tuxtView2"
android:layout_toRightOf="@+id/imageView1"
android:textColor="#555"
android:textSize="20dp" />
</RelativeLayout>
</LinearLayout>
logcat 输出为:
12-26 23:43:20.249: D/First(6789): class android.widget.TextView
12-26 23:43:20.249: D/Second(6789): class android.widget.ImageView
12-26 23:43:20.249: D/Third(6789): class android.widget.TextView
所以重点是,为什么我得到一个 id 为 R.id.tuxtView2 的 imageview 和一个 id 为 R.id.imageView1 的 textview。如果我想为 R.id.tuxtView2 分配一个文本值,应用程序会崩溃,并转换为 TextView。
【问题讨论】:
-
尝试重新加载您的项目,可能是 R.java 出了问题,或者验证您正在使用 setContentView 调用正确的文件。
-
有据可查的问题。抱歉,不知道为什么会这样。
-
@JeremyD,哇,我什么都试过了,几个小时,除了重新启动 Eclipse。我重新启动了eclipse,它突然又开始工作了。我以为我在代码中做错了什么。将其发布为答案,我会投票支持您+将其标记为已解决。谢谢!
-
当 Eclipse 混合了 R.java 中的所有 id 时,有时您需要“清理”您的项目
-
@jonepatr 是的,有时日食有点愚蠢:D
标签: android android-layout android-imageview textview findviewbyid