我是在button的onclick里写的用的swith,一按按钮就崩溃,后来捕捉错误为
Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
但是我et应该有值啊,不理解
case R.id.next:
EditText et = (EditText) v.findViewById(R.id.number);
try {
System.out.println(et.getText().toString());//这句话报错
} catch (Exception ex) {
System.out.println("Error :" + ex.getMessage());
}
break;
首先肯定是你的et并没有实例化,所以才会导致空指针,所以还是你的findViewById(R.id.number)中的id又问题
再有可能是你的v中根本没有这个edittext,你应该打日志确定是哪个为空导致的。
EditText et = (EditText) v.findViewById(R.id.number);
if (et == null){
System.out.println(et.getText().toString());//这句话报错
}
on a null object reference: 引用了一个空的对象
说明et是空的并不是说et没有值,EditText就是没有值也是不会报错的,肯定是你findViewById这句有问题,仔细检查下
v.是干嘛用的,去掉
Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
说明调用.getText()的对象 et为空。
所以1.查看et的id在xml和代码中是否一致都是number
2.根据代码 (EditText) v.findViewById(R.id.number); 确认这个et是否在这个v中国,如果没有,请把“v.”去掉 :(EditText) findViewById(R.id.number);
3.注意id的不要重复
EditText et = (EditText) v.findViewById(R.id.number);
if (et != null){
System.out.println(et.getText().toString());//这句话报错
}
一般来说这样的错误提示,是因为你在代码引用了一个 XML 中不存在的控件 ID 而引起的。
所以,请检查出错行代码的控件变量是否正确初始化。
1 看一下你的对应xml里有没有id为number的EditText。(是EditText不是TextView)
2 看一下你对应的xml是否一致。