通过调用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函数。