通过调用findViewById方法找不到TextView

即使通过ID确实存在,我也无法通过调用findViewById方法来查找TextView。 请看我的代码:

活动:

public class OtherActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { TextView textView = (TextView)findViewById(R.ID.txt02); super.onCreate(savedInstanceState);//line 5 setContentView(R.layout.other_activity); //textView.setText(ACCESSIBILITY_SERVICE); Button button = (Button)findViewById(R.ID.otherActivity_Btn); button.setText(R.string.otherActivityBtn); button.setOnClickListener(new GoBackBtnListener(this)); } class GoBackBtnListener implements OnClickListener { OtherActivity other = null; public GoBackBtnListener(OtherActivity p_other) { other = p_other; } public void onClick(View v) { Intent intent = new Intent(); intent.setClass(other, Activity01Activity.class); other.startActivity(intent); } } } 

我在第5行添加一个断点,并以debugging模式启动项目,当执行停在断点时,我将鼠标移动到variablestextView,它是空的。 other_activity.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/txt02" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+ID/otherActivity_Btn" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> 

和Androidmenifest.xml是这样的:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hp" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="4" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Activity01Activity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".OtherActivity" android:label="@string/other"></activity> </application> </manifest> 

R.java如下所示:

 public final class R { public static final class ID { public static final int Activity01_btn=0x7f050001; public static final int otherActivity_Btn=0x7f050003; public static final int txt01=0x7f050000; public static final int txt02=0x7f050002; } public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class layout { public static final int main=0x7f030000; public static final int other_activity=0x7f030001; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; public static final int other=0x7f040002; public static final int otherActivityBtn=0x7f040003; } } 

所以,我不认为TextView找不到,但为什么variablestextView为null。 我很困惑。 你能帮我find根源吗?

在尝试查找任何UI组件之前,必须调用setContentView(...) 。 您在调用之前试图findTextView

将您的代码更改为…

 super.onCreate(savedInstanceState); setContentView(R.layout.other_activity); TextView textView = (TextView)findViewById(R.id.txt02); 

改变你的代码,如::

  TextView textView = (TextView)findViewById(R.id.txt02); 

没有大写字母,如“ID”

主要:

  <TextView android:id="@+id/txt02" android:layout_width="fill_parent" android:layout_height="wrap_content" /> 

我其实只是有这个问题是由于现在构build自动检查。 只需要手动构build你的项目,或者自动点击构build,这应该可以解决你的问题!

您必须确保在创build活动时已经生成了TextView元素。

最有可能的是,如果它是一个Menu元素,您将不得不调用onCreateOptionsMenu()callback函数上的findViewById方法,而不是Oncreate()callback函数。