setTextViewText在IntentService中不起作用

时间:2013-04-12 06:41:32

标签: android android-appwidget intentservice remoteview

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。我进行了搜索和搜索,但似乎我所做的一切似乎与我找到的相符。

3 个答案:

答案 0 :(得分:0)

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

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

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

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

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

答案 1 :(得分: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);

答案 2 :(得分:0)

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