如何处理空指针警告

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




  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值