findViewById重新出现错误的元素?

jon*_*atr 14 android textview android-layout android-imageview findviewbyid

我无法理解为什么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());
    }   
}
Run Code Online (Sandbox Code Playgroud)

这是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>
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

所以关键是,为什么我得到一个id为R.id.tuxtView2的imageview和一个id为R.id.imageView1的textview.如果我想将文本值分配给R.id.tuxtView2,并将其作为TextView进行转换,应用程序将崩溃.

Jer*_*y D 21

尝试重新加载你的项目,可能是R.java有问题,或者验证你是用setContentView调用好的文件.

通过刷新/清理项目,将重新加载R.java文件并找到命名的小部件.

  • 我只是捎带这个答案,因为你是正确的,但我会补充说,删除我/ gen文件夹的内容是解决一个非常类似的问题的唯一方法. (2认同)
  • 谢谢!当谷歌的代码声称"1 == 2"时,这是非常可怕的;) (2认同)