2011-06-26 21 views
4

ウィジェットがホームスクリーンに追加された後にウィジェットの設定アクティビティを再オープンするにはどうすればよいですか?ウィジェットが追加された後にウィジェットを再設定する

余分でウィジェットIDは、活動に通じ運ばないので、Google検索からの次のコードは動作しません:あなたはありません残念ながら

String ACTION_WIDGET_CONFIGURE = "ConfigureWidget"; 
Intent configIntent = new Intent(context, Configuration.class); 
configIntent.setAction(ACTION_WIDGET_CONFIGURE); 
configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0); 
views.setOnClickPendingIntent(R.id.editButton, configPendingIntent); 

答えて

0

:ウィジェットの仕様は、それが現在存在するがしますウィジェット構成アクティビティを通じてウィジェットの再構成をサポートしません。

あなたのできることは、ウィジェット設定アクティビティを起動し、特定のウィジェットIDを手動で追跡することです。新しい設定が完了したら、適切なマネージャメソッドを使用して手動でウィジェットを更新できます。ただし、新しいウィジェットと同じコードパスを使用することはできません。

4

OK、私は1年遅れですが、あなたと同じ回答を探していて、あなたのコードに欠落している旗があることに気付きました。保留中のインテント、エキストラ、ウィジェットが含まれます。あなたのコード行を変更してみてください:

これに
PendingIntent configPendingIntent 
    = PendingIntent.getActivity(context, 0, configIntent, 0); 

PendingIntent configPendingIntent 
    = PendingIntent.getActivity(context, 0, configIntent, 
           PendingIntent.FLAG_UPDATE_CURRENT); 

PendingIntentは、新しいものと一致して、既存のキャッシュされたインテントを再利用し、「一致」は余分を考慮していないので、新しいエキストラをすることができ無視される。 FLAG_UPDATE_CURRENTを追加すると、PendingIntentはキャッシュされたインテント(またはそのようなもの)にエキストラを書き出します。

とにかく、私はちょうど私のために働いていました(しかし、私も同じ意味でAppWidgetManager.ACTION_APPWIDGET_CONFIGUREをアクション名として使っていました)。

関連する問題