前几天在网上看了一个仿QQ的代码,我发现有一个问题,就是在activity里面需要不断的使用BroadcastReceiver  去接收收到的msg,但是有时候传过来的msg有可能是空的,因为可能是从后台转过来的,这样的话,使用String stringExtra = intent.getStringExtra("msg");就会报空指针的错误,然后直接强制被关闭任务了。这样应该如何解决?

解决方案 »

  1.   

    在发送的时候就不让他发null的msg 可以么
      

  2.   

    对于null的字符串...  后台不执行intent 传参 发送广播
      

  3.   

    intent.getStringExtra("msg")
    这个没有"msg"会抛出null exception? 不是吧我理解你是说String stringExtra这个为null?如果这样那就处理下就好了
      

  4.   

    @Override
    public void onReceive(Context context, Intent intent) {
    TranObject msg = (TranObject) intent
    .getSerializableExtra(Constants.MSGKEY);
    if (msg != null) {//如果不是空,说明是消息广播
    // System.out.println("MyActivity:" + msg);
    getMessage(msg);// 把收到的消息传递给子类
    } else {//如果是空消息,说明是关闭应用的广播
    close();
    }
    }
    };
    这个是广播的代码,可是在实例化msg的时候就会报空指针的错误了,因为我从后台切换过来的时候是没有传msg的。但是刚开始登入的时候也传msg的,发消息也是传的,就是在后台切换过来的时候,其实是没有带参数的。
      

  5.   

    在发送的时候就不让他发null的msg 可以么
    @Override
    public void onReceive(Context context, Intent intent) {
    TranObject msg = (TranObject) intent
    .getSerializableExtra(Constants.MSGKEY);
    if (msg != null) {//如果不是空,说明是消息广播
    // System.out.println("MyActivity:" + msg);
    getMessage(msg);// 把收到的消息传递给子类
    } else {//如果是空消息,说明是关闭应用的广播
    close();
    }
    }
    };
    这个是广播的代码,可是在实例化msg的时候就会报空指针的错误了,因为我从后台切换过来的时候是没有传msg的。但是刚开始登入的时候也传msg的,发消息也是传的,就是在后台切换过来的时候,其实是没有带参数的。
      

  6.   

    在发送的时候就不让他发null的msg 可以么
    @Override
    public void onReceive(Context context, Intent intent) {
    TranObject msg = (TranObject) intent
    .getSerializableExtra(Constants.MSGKEY);
    if (msg != null) {//如果不是空,说明是消息广播
    // System.out.println("MyActivity:" + msg);
    getMessage(msg);// 把收到的消息传递给子类
    } else {//如果是空消息,说明是关闭应用的广播
    close();
    }
    }
    };
    这个是广播的代码,可是在实例化msg的时候就会报空指针的错误了,因为我从后台切换过来的时候是没有传msg的。但是刚开始登入的时候也传msg的,发消息也是传的,就是在后台切换过来的时候,其实是没有带参数的。
      

  7.   

    String stringExtra = intent.getStringExtra("msg");
    这段代码应该不会报空指针异常才对,除非intent是空的。
    或者是不传值时,打印出来的stringExtra 是null