Service
中有一个 AsyncTask
. 我从 AsyncTask
发送 ArrayList
作为广播 .
当我在 onReceive()
获得 ArrayList
时,我得到 NullpointerException
.
这就是我发送 ArrayList
的方式 .
transits_list = new ArrayList<Transit>();
transits_list.add(trs);
Intent arrayListIntent = new Intent("arrayList");
Bundle extra = new Bundle();
extra.putSerializable("transArray", transits_list);
intent.putExtra("extra", extra);
sendBroadcast(arrayListIntent);
Transit
类实现 Serializable
.
收到 ArrayList
@Override
public void onReceive(Context context, Intent intent) {
ArrayList<Transit> myList;
Bundle extra = getIntent().getBundleExtra("extra");
ArrayList<Transit> transArrayListFromBroadCast = (ArrayList<Transit>) extra.getSerializable("transArray");
System.out.print("transArrayListFromBroadCast "+transArrayListFromBroadCast);
}
我在这一行得到 NullpointerException
:
ArrayList<Transit> transArrayListFromBroadCast = (ArrayList<Transit>) extra.getSerializable("transArray");
日志异常:
FATAL EXCEPTION:main java.lang.RuntimeException:在com.prematix.tollsystem.avcc.AvccActivity$ArrayListReceiver@42003268的android.app.LoadedApk $ ReceiverDispatcher $ Args.run中接收广播Intent 时出错LoadedApk.java:798)android.os.Handler.handleCallback(Handler.java:800)android.os.Handler.dispatchMessage(Handler.java:100)android.os.Looper.loop(Looper.java:194) )在com.的java.lang.reflect.Method.invoke(Method.java:525)的java.lang.reflect.Method.invokeNative(Native Method)的android.app.ActivityThread.main(ActivityThread.java:5391)上 . android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:833)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)at dalvik.system.NativeStart.main(Native Method)引起by:java.lang.NullPointerException at com.prematix.tollsystem.avcc.AvccActivity $ ArrayListReceiver.onReceive(AvccActivity.java:271)at android.app.LoadedApk $ ReceiverDispatcher $ Args.run(LoadedApk.java:788)at android . 口.Handler.handleCallback(Handler.java:800)位于android.app.AtoT.Thread.main的android.os.Handler.dispatchMessage(Handler.java:100)android.os.Looper.loop(Looper.java:194) ActivityThread.java:5391)在java.lang.reflect.Method.invoke的java.lang.reflect.Method.invokeNative(Native Method)中(Method.java:525)
1 回答
获取
Intent
的方法不正确 . 我相信你的BroadcastReceiver
在一个活动类中,因为你正在调用getIntent()
. 但是,getIntent()
将为您提供Intent
提供给活动而不是接收者 .Intent
forreceiver
提供给方法onReceive()
本身 . 对您的代码进行以下更改:添加额外:
获得额外的: