找不到带有 findViewById() 的视图 [英] Can not find a View with findViewById()
问题描述
即使 ID 确实存在,我也无法通过调用 findViewById()
找到 TextView
.
I cannot find a TextView
by calling findViewById()
, even though the ID does exist.
其他活动
:
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 行添加了一个断点,并以调试模式启动了项目.当它停在断点处时,我将鼠标移动到变量textView
,它为空.
I added a breakpoint at line 5, and started the project in debug mode. When it stopped at the break point, I moved the mouse to variable textView
, and it was null.
other_activity
布局:
<?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>
AndroidManifest.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
不应该被发现,但是为什么变量textView
为空?
I don't think the TextView
should not be found, but why is the variable textView
null?
推荐答案
您必须在尝试查找任何 UI 组件之前调用 setContentView(...)
.您试图在调用 TextView
之前找到它.
You have to call setContentView(...)
BEFORE you attempt to find any of the UI components. You're trying to find the TextView
before you've called it.
将您的代码更改为此...
Change your code to this...
super.onCreate(savedInstanceState);
setContentView(R.layout.other_activity);
TextView textView = (TextView)findViewById(R.id.txt02);
这篇关于找不到带有 findViewById() 的视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!