findViewById返回错误

时间:2011-10-04 11:13:17

标签: java android textview

findViewById发出错误,我认为是因为它返回null。我的应用程序被迫关闭。

SensorManager sensorManager=null;

TextView x= null;
TextView y= null;
TextView z= null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    setContentView(R.layout.main);
    x= (TextView) findViewById(R.id.tv1);
    y= (TextView) findViewById(R.id.tv2);
    z= (TextView) findViewById(R.id.tv3);
}

XML:

<TextView
    android:id="@+id/tv1"
    android:layout_x="10px"
    android:layout_y="550px"
    android:text="@string/x"
    />  
<TextView
    android:id="@+id/tv2"
    android:layout_x="100px"
    android:layout_y="550px"
    android:text="@string/y"
    />  
<TextView
    android:id="@+id/tv3"
    android:layout_x="200px"
    android:layout_y="550px"
    android:text="@string/z"
    />

有人可以告诉我我做错了吗?

解决!

我在底部使用了Sunny提供的XML!谢谢大家!

5 个答案:

答案 0 :(得分:2)

那很简单......电视*不在您的布局中!

请发布布局,我100%确定它不包含:

<TextView android:id="@+id/tv1"/>
<TextView android:id="@+id/tv2"/>
<TextView android:id="@+id/tv3"/>

在进一步开发android开发之前,请先学习如何获取logcat! ; - )

窗口 - &gt;显示视图 - &gt; logcat的

答案 1 :(得分:0)

首先:确认您的布局中存在TextViewmain.xml

<TextView android:id="@+id/tv1" .../>
<TextView android:id="@+id/tv2" .../>
<TextView android:id="@+id/tv3" .../>

第二:按照以下步骤重新构建项目:项目==&gt;清洁==&gt;选择您的项目,然后单击“确定”。

答案 2 :(得分:0)

是的,上面的代码工作正常,xml文件应该是这样的。

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
 <TextView 
 android:id="@+id/tv1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"></TextView>
 <TextView 
  android:id="@+id/tv2"
  android:layout_width="wrap_content"
   android:layout_height="wrap_content"></TextView>
  <TextView>
 android:id="@+id/tv3"
 android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
 </LinearLayout>

答案 3 :(得分:0)

是的,那个问题以及如果没有使用xml那么 你导入android.R; 所以如果你有xml它会给出错误 删除 并导入PACKAGENAME.R;

答案 4 :(得分:0)

发生这种情况的原因是:

findViewById()将在setContentView(R.layout.main)建立的View层次结构中搜索TextView。因此,如果TextViews不在main.xml中,您将获得null