在AndroidStudio开发Android应用中,有时候会看到这样的警告“Method invocation 'titleTxt.setOnClickListener(new View.OnClickListener() { @Override public vo...' may produce 'java.lang.NullPointerException”。这个警告的意思是这段代码可能会出现空指针。
为了保证代码的健壮性,我们有两种方式可以选择。
一、对变量进行判断,如果为空就输出日志信息。代码如下。
<pre name="code" class="java"> TextView titleTxt = (TextView) findViewById(R.id.txt_title);
if (titleTxt != null){
titleTxt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
}
});
}else {
Log.w("tag","titleTxt的ID错误");
}
这样写无疑是最稳健的办法。但是在开发过程中这种空指针异常非常少见,如果每一个组件都为空指针增加这样的判断代码量会增加很多,而且这样写没有必要。因此,在确保空指针不会发生情况下,可以采用第二种方式。
二、通过assert声明该变量不为空
<span style="white-space:pre"> </span>TextView titleTxt = (TextView) findViewById(R.id.txt_title);
assert titleTxt != null;
titleTxt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
}
});
用这种方式之前一定要按住Ctrl左键单击ID确认该组件是不是在当前Activity中,否则这样写就是自己骗自己了。