我有一个小部件,可以显示数据库中的一些信息。该小部件每小时会定期更新一次。但是我还允许用户通过单击小部件上的刷新按钮手动更新它。如何执行点击操作并刷新小部件?
注意:该小部件使用服务来执行操作。
谢谢提前。
我有一个小部件,可以显示数据库中的一些信息。该小部件每小时会定期更新一次。但是我还允许用户通过单击小部件上的刷新按钮手动更新它。如何执行点击操作并刷新小部件?
注意:该小部件使用服务来执行操作。
谢谢提前。
for(int i = 0; i<appWidgetIds.length; i++) {
Intent serviceIntent = new Intent(context, MyService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
PendingIntent pendingServiceIntent = PendingIntent.getService(context, 0, serviceIntent, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.refresh, pendingServiceIntent);
context.startService(serviceIntent);
appWidgetManager.updateAppWidget(appWidgetIds[i], views);
}
for(int i = 0; i<appWidgetIds.length; i++) {
Intent serviceIntent = new Intent(context, MyService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
PendingIntent pendingServiceIntent = PendingIntent.getService(context, 0, serviceIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Intent settingsIntent = new Intent(context, SettingsActivity.class);
settingsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
settingsIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
settingsIntent.setData(Uri.parse(settingsIntent.toUri(Intent.URI_INTENT_SCHEME)));
PendingIntent pendingSettingsIntent = PendingIntent.getActivity(context, 0, settingsIntent, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.title, pendingSettingsIntent);
views.setOnClickPendingIntent(R.id.refresh, pendingServiceIntent);
context.startService(serviceIntent);
appWidgetManager.updateAppWidget(appWidgetIds[i], views);
}
我认为当用户点击“刷新按钮”时,您需要重新加载您的小部件视图。
//for refresh button
Intent refresh = new Intent(ctxt, WatchWidget_Honeycomb.class);
PendingIntent refreshIntent = PendingIntent.getBroadcast(ctxt, 0, refresh, 0);
widget.setOnClickPendingIntent(R.id.btn_Refresh, refreshIntent);
appWidgetManager.updateAppWidget(new ComponentName(ctxt,WatchWidget_Honeycomb.class), widget);
onUpdate()
中吗? - natsumiyu