1

widget数を設定する がありpendingIntentsます。ホーム画面にウィジェットが1つしかない限り、ウィジェットはすべて正常に機能しています。

とりあえず、ユーザーをホーム画面のウィジェットの 1 つだけに制限することにしました。1 つが既に使用されている場合はConfigureActivity 、2 つ目を追加できないことを知らせる alertDialog ボックスがユーザーに表示され、設定setResult(RESULT_CANCELED, null)してから finish() に進みます。

これは問題なく機能し、ユーザーはそれ以上ホーム画面のウィジェットをセットアップできなくなりますが、既に配置されているウィジェットのほとんどは起動しpendingIntentsません。Logcat は、「保留中のインテントを送信できません:」と言っています。

各 pendingIntents は、ウィジェットの更新に使用されるサービスを開始するように設定されています。ウィジェットを削除してリセットすると、2 つ目のウィジェットを追加しようとするまで、正常に動作します。この時点で、私には少し困惑しています。2 番目のウィジェットの追加を開始したが、それを完了しないと以前の pendingIntents が取り消される理由について、誰にもアイデアがありますか?

重要な場合は、でセットアップする pendingIntents FLAG_CANCEL_CURRENT.

intentmyとを設定するために使用されるコードは次のとおりですpendingIntents

Intent intentDialog = new Intent(getBaseContext(), ScheduleActionsActivity.class);
intentDialog.putExtra("Action", ACTION_ENTER_SCHEDULE);  
intentDialog.setAction("abc.hwRowOne");  
intentDialog.putExtra("scheduleId", sch.getId());  
intentDialog.putExtra("scheduleDescription", sch.getDescription());  
PendingIntent pendingIntentDialog1 = PendingIntent.getActivity(getBaseContext(), 0, intentDialog, PendingIntent.FLAG_CANCEL_CURRENT);  
views.setOnClickPendingIntent(R.id.hwRowOne, pendingIntentDialog1);  

ウィジェットの行ごとにintentDialog.setAction()変更される行が一意になるため、 pendingIntent も一意になると思いました。

質問を投稿した後、昨夜この回答を見ましたが、なぜ/どのように機能するのかわかりません。自分の地域のどこに置くべきかわかりません。インテントごとに一意のデータを設定しているように見えますが、それが私.setAction()がやっていると思っていたことです。最後のウィジェットのみを更新するウィジェットの複数のインスタンス

あなたの質問に答えるために、いいえ、私のインテントで appWidgetId をまったく使用していませputExtra()intentDialog

4

1 に答える 1

0

この質問への答えは私の問題を解決しました: ウィジェットのみの複数のインスタンスが最後のウィジェットを更新しています

作品を追加する理由setData(uri)はわかりませんが、ホーム画面に複数のウィジェットを表示できるようになり、pendingIntents期待どおりにユニークで発火します。

安全のappWidgetIdために、intentデバイスごとに複数のウィジェットを許可することにした場合、後で必要になる可能性があります。

于 2012-07-12T14:09:48.750 に答える