【发布时间】:2015-04-18 08:00:46
【问题描述】:
我有一个显示随机数的简单小部件。当点击它刷新并显示另一个随机数。这是 AppWidgetProvider 的 onUpdate 方法的代码
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int widgetId : appWidgetIds) {
int number = new Random().nextInt(100);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_exchange);
remoteViews.setTextViewText(R.id.widget_textview, String.valueOf(number));
// Register an onClickListener
Intent intent = new Intent(context, ExchangeWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] {widgetId} );
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.widget_textview, pendingIntent);
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
}
这样,小部件在放置时会进行第一次更新,但在单击时不会再次更新。如果我只是将待处理的意图行更改为:
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
到
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, widgetId, intent, 0);
即唯一改变的是最后一个参数现在是'0'
它现在按预期工作,点击它会显示一个新的随机数。
这是怎么回事,但是当它有 FLAG_UPDATE_CURRENT 标志时它不起作用?
【问题讨论】:
标签: android android-intent android-widget