我在Activity.java中有这段代码:
public void scan(View view){
EditText text = (EditText) findViewById(R.id.editText3);
text.setText("asdas");
}
,这在Activity xml:
中<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:onClick="scan"
android:text="Scane"
android:textColor="#fff"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
tools:layout_editor_absoluteY="271dp"
tools:layout_editor_absoluteX="8dp" />
<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
tools:layout_editor_absoluteX="89dp"
tools:layout_editor_absoluteY="165dp" />
当点击按钮时,应用程序崩溃:
Attempt to invoke virtual method 'void
android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
为什么,即时通讯使用Android Studio最新版本?
答案 0 :(得分:0)
似乎findViewById
返回null
:即由于某种原因它找不到您的编辑文字。
也许您只需要重建项目:Build
- Rebuild Project
否则你搞砸了别的东西,必须发布更多信息
答案 1 :(得分:0)
将此Edittext初始化代码放在onCreate方法中。
EditText text;
protected void onCreate(Bundle savedInstanceState) {
text = (EditText) findViewById(R.id.editText3);
}
public void scan(View view){
text.setText("asdas");
}
答案 2 :(得分:0)
您的findViewById
返回null,因为它没有上下文。
我认为你正在传递view
对象用于上下文但不使用它。
尝试更改
EditText text = (EditText) findViewById(R.id.editText3);
到
EditText text = (EditText) view.findViewById(R.id.editText3);
答案 3 :(得分:0)
在下面的代码中,您将获得相关的EditText对象
EditText text = (EditText) findViewById(R.id.editText3);
然后,您调用该对象的setText()方法,但采用空对象引用
text.setText("asdas");
这意味着您无法正确获取EditText对象。因此,错误的起因来自以下行:
EditText text = (EditText) findViewById(R.id.editText3);
请务必在正确的上下文中调用scan()方法。尝试在onCreate()方法中调用它。如果从其他位置调用findViewById()方法,请务必从正确的上下文中调用它。