yhm2046 2021-09-09 18:11 采纳率: 0%
浏览 11

请问在广播接收器中如何获取自定义对象?

发送:
 Intent intent=new Intent(TestActivity2.this,
                        BroadcastReceiverGPS.class);
                intent.setAction("com.xyz");
//                传输对象测试
                SvStatus svStatus=new SvStatus();
                svStatus.setB(1);
                svStatus.setB1(1);
                svStatus.setB2(1);
                svStatus.setC(1f);
                svStatus.setC(1f);
                intent.putExtra("sv",svStatus);
                sendBroadcast(intent);

接收
public void onReceive(Context context, Intent intent) {
        String acion=intent.getAction().toString();
        switch (acion){
            case ACTION1:
                Log.i(TAG,"reciver the abc...");
                break;
            case ACTION2:
                Log.i(TAG,"reciver the xyz...");
//                Object o= (intent.getSerializableExtra("sv"));
//                SvStatus svStatus=(SvStatus)o;
//                Log.i(TAG,"sv:"+svStatus.getB());
                SvStatus s=intent.getParcelableExtra("sv");
                Log.i(TAG,"sv:"+s.getB());
                break;
            default:
        }
    }

报错:
 java.lang.RuntimeException: Unable to start receiver com.example.myapplication.broadcast.BroadcastReceiverGPS: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.example.myapplication.io.SvStatus.getB()' on a null object reference
        at android.app.ActivityThread.handleReceiver(ActivityThread.java:4041)
        at android.app.ActivityThread.access$1400(ActivityThread.java:237)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1924)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.example.myapplication.io.SvStatus.getB()' on a null object reference
        at com.example.myapplication.broadcast.BroadcastReceiverGPS.onReceive(BroadcastReceiverGPS.java:32)
        at android.app.ActivityThread.handleReceiver(ActivityThread.java:4032)
  • 写回答

1条回答 默认 最新

  • Silwings银翼 2022-02-10 10:34
    关注

    你先确认一下27行能不能拿到内容,是没set进去,还是取的方式不对

    评论

报告相同问题?

问题事件

  • 创建了问题 9月9日

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题