2 つのボタンを含む小さなウィジェットを作成しています。問題は、ウィジェットが画面に削除/追加されたときに、ボタンが機能しないことがあり、リスナーが接続されていないようです。BroadcastReceiver で以下のコードを使用します。
@Override
public void onUpdate(final Context context, final AppWidgetManager aAppWidgetManager,
final int[] appWidgetIds) {
super.onUpdate(context, aAppWidgetManager, appWidgetIds);
Log.d("Widget_On_update", "Total widgets : " + appWidgetIds.length);
for (final int widgetId : appWidgetIds) {
Log.d("Widget_On_update", "Updating widget : " + widgetId);
final RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
updateActionListener(true, context, appWidgetIds, remoteViews, UPDATE_DATA_ACTION, id.button_data_update);
updateActionListener(true, context, appWidgetIds, remoteViews, UPDATE_WIFI_ACTION, id.button_wifi_update);
aAppWidgetManager.updateAppWidget(widgetId, remoteViews);
}
updateStatus(context);
}
private void updateActionListener(final boolean add, final Context context, final int[] appWidgetIds,
final RemoteViews aRemoteViews, final String aAction, final int aViewId) {
// Register an onClickListener
final Intent intent = new Intent(context, DataToggleWidgetProvider.class);
intent.setAction(aAction);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
if (add) {
aRemoteViews.setOnClickPendingIntent(aViewId, pendingIntent);
} else {
pendingIntent.cancel();
}
}
Math.random、静的カウンターなど、PendingIntent.getBroadcast の 2 番目のパラメーターにさまざまな値を試しました。これらの方法はどちらも機能しませんでした。誰でも私を助けることができますか?
前もって感謝します。