2

投稿日: 2009 年 11 月 30 日 (月) 午後 5:08 投稿件名: 単純な問題とインテント エクストラ こんにちは。

ホーム画面用のアプリウィジェットに取り組んでいます。ユーザーがウィジェットをタップすると、ウィジェットに表示されるデータが変更されるようにしようとしています。ただし、ウィジェットの複数のインスタンスを異なるデータで開くことも許可しています。したがって、更新するウィジェットをメソッドに伝えるために、データを変更するために起動されるインテントにエクストラを追加しています。

これが私が持っている意図です: Java:

Intent changeData = new Intent("com.tonycosentini.mintdroid.CHANGE_DATA"); 
changeData.putExtra("widget_id", currentWidgetId); 
PendingIntent changeDataPendingIntent = PendingIntent.getBroadcast(this, 0, changeData, 0); 
//This will return the correct value, but if I call it in my onreceive() method it won't.
Log.v(TAG, "stored id is: " + changeData.getIntExtra("widget", 0);

これはウィジェット ID を正しく保存しますが、データ変更メソッドが呼び出されると、インテントから読み取られるウィジェット ID は最初のウィジェット インスタンスになります。つまり、すべてのウィジェットを生成する for ループがあり、どのウィジェットをタップしても、受信されるウィジェット ID は常に最初のウィジェットの最初のウィジェット ID です。

誰でもこれを解決する方法について考えがありますか? うまくいけば、私はそれをあまり悪く言いませんでした。

読んでくれてありがとう、トニー

4

1 に答える 1

1

これは PendingIntents の既知の問題です。Android が PendingIntents を比較する場合、インテント エクストラは比較されないため、異なるエクストラのみを使用して同じ基本インテントを複数回スケジュールすることはできません。現時点では、Intent データに追加情報を追加するなど、エクストラ以外の方法で Intent を一意にすることによってのみ、これを解決できます。

これについては、Google Android グループで少し議論があります: http://groups.google.com/group/android-developers/browse_thread/thread/81100da6ddb21136

于 2009-12-01T18:21:42.477 に答える