标签:android os io java 文件 问题 cti 代码 log
今天在Android中碰到了这样一个问题,其实应该很少人会碰到,因为只有像我这种奇葩才会犯这种错误。
但既然解决了,我就想在这里跟大家分享一下,毕竟它困扰了我一个白天啊。。。不多说了,看下面。。。
其实问题很简单,就是Caused By : java.lang.NullPointerException.
上面就是我在用EditText 的时候它给我提示的错误类型。
为了简便,截取了部分代码如下,这就是问题的根源所在。
super.onCreate(savedInstanceState);
final EditText et = (EditText)findViewById(R.id.editTextId);
String str = et.getText().toString().trim();
setContentView(R.layout.main);
咋一看,没什么不对啊。就是因为我是新手,所以没看出端倪来。然后拼命的报错,拼命的上网查。
而网上却没有这个情况。。。
ADT Log 里面显示的出错位置就是String str = et.getText().toString().trim();这一行。
可它真的没什么不对啊,如果此时你呵呵了。那么你已经看出来了。
对,就是setContentView(R.layout.main);这句话位置放错了,它应该放在引用的资源文件的前面,在这里也就是
final EditText et = (EditText)findViewById(R.id.editTextId);这句话的前面。因为R.id.editTextId这个Id
引用到了R.layout.main这个Xml文件里面的对EditText的定义<EditText android:id="@+id/editTextId"
而在final EditText et = (EditText)findViewById(R.id.editTextId)句话之前我们并没有把R.layout.main这个Xml
文件放到我们的Context中来。我们可以观察一下findViewById()方法,会发现原来此方法中的R.id.editTextId是从当前
Activity的主布局文件xml中获取。而R.layout.main一定要先于findViewById(R.id.editTextId)在程序中声明。
那么这样改就对了:
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText et = (EditText)findViewById(R.id.editTextId);
String str = et.getText().toString().trim();
setContentView(R.layout.main);
这是本人犯的低价错误,对于大神没有什么参考价值,但我确确实实被它耍了一回,所以有必要在这里分享一下。
标签:android os io java 文件 问题 cti 代码 log
原文地址:http://www.cnblogs.com/beyondckw/p/3959662.html