0

onHandleIntent 中的代码:

RemoteViews views = new RemoteViews(getPackageName(), R.layout.mylayout);
views.setTextViewText(R.id.txtView1, "some string");
...
Bundle bundle = intent.getExtras();
int id = bundle.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
manager.updateAppWidget(id, views);

不会更新名为 txtView1 的小部件的 TextView。我已经搜索和搜索,但似乎我所做的一切似乎都与我发现的相符。

4

3 回答 3

0

叹息,谢谢大家的回答,不幸的是这是我的错误。在我的自定义 AppWidgetProvider 的 onUpdate 中,我传递了错误的 ID。我现在已将其切换到正确的 ID,并且每个小部件实例都会正确更新。

于 2013-04-14T02:33:34.160 回答
0

您需要 Handler 从工作线程更新 UI。

您可以从本教程 http://crodrigues.com/updating-the-ui-from-a-background-thread-on-android/中获得帮助

或者,Asynctask如果您不想进入线程和处理程序的东西,您可以使用。

Asynctask自己管理这些东西,你可以在 onPostExecute() 方法中更新 UI 等等。

您可以在谷歌的开发者 android 网站中阅读有关详细信息asynctask

于 2013-04-12T06:50:28.073 回答
0

您必须在应用小部件开发中更新您的文本视图。

  RemoteViews views = new RemoteViews(getPackageName(), R.layout.mylayout);
    views.setTextViewText(R.id.txtView1, "some string");
    thisWidget = new ComponentName(context, WatchWidget.class);  
    appWidgetManager.updateAppWidget(thisWidget, remoteViews);
于 2013-04-12T07:03:18.053 回答