【发布时间】:2015-03-31 15:24:33
【问题描述】:
我看到了几个关于如何更新小部件的问题,但没有任何帮助解决我的问题。
我创建了一个具有文本视图的小部件,我希望在创建小部件时动态更新它。 我有一个在屏幕上添加小部件时调用的配置活动。我将值存储在 sharedpreferences 中并在更新时检索它。问题是小部件没有得到更新。知道怎么做吗?我不想在单击小部件后更新文本视图,只需在创建时显示正确的文本。
public class AndroidWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
ComponentName thisWidget = new ComponentName(context,
AndroidWidget.class);
int[] allWidgetInstancesIds = appWidgetManager
.getAppWidgetIds(thisWidget);
for (int widgetId : allWidgetInstancesIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);
// Create an intent that when received will launch the PopUpActivity
Intent intent = new Intent(context, AndroidWidget.class);
intent.setAction(SHOW_POPUP_DIALOG_ACTION);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
widgetId, intent, 0);
// Set up the onClickListener of the widget
remoteViews.setOnClickPendingIntent(R.id.myText, pendingIntent);
SharedPreferences prefs = context.getSharedPreferences(
String.valueOf(widgetId), Context.MODE_PRIVATE);
remoteViews.setTextViewText(R.id.myText,
prefs.getString("storedtext", null));
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
这实际上会更新文本视图,但仅在单击或创建另一个小部件之后。
【问题讨论】: