0
パーセル可能オブジェクトをアクティビティとサービスの両方に送信します。私の活動では、Androidパーセルオブジェクトはアクティビティに渡されますが、サービスには渡されません
public void onClick(View view) {
Intent intent = new Intent(mContext, MainActivity.class);
Intent i = new Intent(mContext, OverlayService.class);
intent.putExtra(ITEM_KEY, item);
i.putExtra(ITEM_KEY, item);
mContext.startActivity(intent);
}
次に受信する:私が使用して両方に送信するため
DataItem item = getIntent().getExtras().getParcelable(DataItemAdapter.ITEM_KEY);
if (item == null) {
throw new AssertionError("Null data item received!");
}
これは完璧に動作します。しかし、私が使用私のサービスのために:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
DataItem item = intent.getExtras().getParcelable(DataItemAdapter.ITEM_KEY);
if (item == null) {
throw new AssertionError("Null data item received!");
}else{
Toast.makeText(this, "Item received", Toast.LENGTH_SHORT).show();
}
return START_STICKY;
}
結果がnullpointer例外である:ここで
Unable to start service [email protected] with Intent { cmp=com.madhatter.nat.test/.OverlayService }: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Parcelable android.os.Bundle.getParcelable(java.lang.String)' on a null object reference
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3314)
at android.app.ActivityThread.-wrap21(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1565)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Parcelable android.os.Bundle.getParcelable(java.lang.String)' on a null object reference
at com.madhatter.nat.test.OverlayService.onStartCommand(OverlayService.java:46)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3297)
at android.app.ActivityThread.-wrap21(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1565)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
は私がサービスを開始するために使用するコードです:
public void show(View view) {
checkPermissionOverlay();
Intent svc = new Intent(this, OverlayService.class);
startService(svc);
notificationService();
}
任意のアイデアはどのようなI間違ってる?助けてくれてありがとう。
サービスの開始に使用するコードを表示します。 – riggaroo
私は要求されたコードに追加しました。 –