如何处理空指针警告

在AndroidStudio开发Android应用中,有时候会看到这样的警告“Method invocation 'titleTxt.setOnClickListener(new View.OnClickListener() { @Override public vo...' may produce 'java.lang.NullPointerException”。这个警告的意思是这段代码可能会出现空指针。

为了保证代码的健壮性,我们有两种方式可以选择。

一、对变量进行判断,如果为空就输出日志信息。代码如下。

        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声明该变量不为空

	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中,否则这样写就是自己骗自己了。




你可能感兴趣的:(Android)