我正在开发一个运行服务的应用程序,该服务定期发送有关其当前状态的广播。我的AppWidgetProvider
使用onReceive
方法收到了这些广播:
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if (intent.getAction().equals(ACTION_STATUS_CHANGED)) {
Bundle b = intent.getBundleExtra("updateInfo");
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_app_control);
// Doesn't work for some reason
views.setTextViewText(R.id.informationTextView, b.getString(MyService.BIT_OF_INFORMATION));
// Update widgets
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, AppControlWidgetProvider.class));
this.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
但是,即使我已将调用添加到onUpdate
,但要使用setTextViewText
设置的新文本也无法使用实际的小部件。如果我创建了捆绑包,我将可用的信息提供给整个类的实例(将其保存在属性中,以便进行测试)并从内部对setTextViewText
进行完全相同的调用onUpdate
方法,TextView
按预期更新。
到目前为止,我已经在某种程度上浏览了有关此主题的SO,但在其他地方设置TextView
文本的onReceive
文字的方式与我做的完全相同它(除非我错过了某些东西,似乎是完美的)。