1

アクティビティからウィジェットに arraylist を渡そうとしていますが、ウィジェット プロバイダーでアプリがクラッシュします。

以下に詳細を記載しました。

これが私の最初の活動のコードの一部です:

        Intent intent1 = new Intent(MainActivity.this,
                AppProviderWidget.class);
        intent1.setAction("android.appwidget.action.APPWIDGET_UPDATE");
        // Use an array and EXTRA_APPWIDGET_IDS instead of
        // AppWidgetManager.EXTRA_APPWIDGET_ID,
        // since it seems the onUpdate() is only fired on that:
        int[] ids = widgetIDs;
        intent1.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
        intent1.putExtra("widgetlist", result);
        sendBroadcast(intent1);

送信したデータは次のとおりです。

    intent1.putExtra("widgetlist", result);

AppProviderWidget onReceive メソッドからのコード

    @Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
    ArrayList<DuyuruHaber> arl = new ArrayList<DuyuruHaber>();
    arl = (ArrayList<DuyuruHaber>) intent
            .getSerializableExtra("widgetlist");

    try {

            liste = arl;
    } catch (Exception e) {
        Log.w("Log",e.toString());
    }}

AppProviderWidget.onReceive(AppProviderWidget.java:170)

arl = (ArrayList<DuyuruHaber>) intent
            .getSerializableExtra("widgetlist");

私の丸太猫

08-23 16:28:01.684: E/AndroidRuntime(10067): FATAL EXCEPTION: main
08-23 16:28:01.684: E/AndroidRuntime(10067): java.lang.RuntimeException: Unable to start receiver widget.AppProviderWidget: java.lang.NullPointerException
08-23 16:28:01.684: E/AndroidRuntime(10067):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2821)
08-23 16:28:01.684: E/AndroidRuntime(10067):    at android.app.ActivityThread.access$3200(ActivityThread.java:125)
08-23 16:28:01.684: E/AndroidRuntime(10067):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
08-23 16:28:01.684: E/AndroidRuntime(10067):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-23 16:28:01.684: E/AndroidRuntime(10067):    at android.os.Looper.loop(Looper.java:123)
08-23 16:28:01.684: E/AndroidRuntime(10067):    at android.app.ActivityThread.main(ActivityThread.java:4627)
08-23 16:28:01.684: E/AndroidRuntime(10067):    at java.lang.reflect.Method.invokeNative(Native Method)
08-23 16:28:01.684: E/AndroidRuntime(10067):    at java.lang.reflect.Method.invoke(Method.java:521)
08-23 16:28:01.684: E/AndroidRuntime(10067):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
08-23 16:28:01.684: E/AndroidRuntime(10067):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
08-23 16:28:01.684: E/AndroidRuntime(10067):    at dalvik.system.NativeStart.main(Native Method)
08-23 16:28:01.684: E/AndroidRuntime(10067): Caused by: java.lang.NullPointerException
08-23 16:28:01.684: E/AndroidRuntime(10067):    at widget.AppProviderWidget.onReceive(AppProviderWidget.java:170)
08-23 16:28:01.684: E/AndroidRuntime(10067):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2810)

助けてくれてありがとう。

4

2 に答える 2

0

これを試して

intent.putParcelableArrayListExtra("myKey", ArrayList<T extends Parcelable> list);
startActivity(intent);

それを取得するには、 getIntent() メソッドを使用する必要があります

getIntent().getParcelableArrayListExtra("myKey");
于 2013-08-23T14:12:17.147 に答える