2013-04-12 4 views
0

здесь код в onHandleIntent:setTextViewText не работает в IntentService

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); 

не обновляет TextView виджета с именем txtView1. Я искал и искал, но кажется, что все, что я сделал, похоже, соответствует тому, что я нашел.

+3

Служба работает в фоновом режиме Вы не можете напрямую обновлять ui из службы. Использовать обработчик – Raghunandan

+0

Да, согласен. Вот почему тосты не работают. Однако RemoteViews может быть в другом процессе. Ответ @Harshid почти работает, но он обновляет все экземпляры. – joe

ответ

0

Вздохнуть, спасибо всем за ваши ответы, к сожалению, это была моя ошибка. В моем onUpdate из моего пользовательского AppWidgetProvider я передал неправильный идентификатор. Теперь я переключил его на правильный идентификатор, и каждый экземпляр виджета корректно обновляется.

0

Вам нужен обработчик для обновления пользовательского интерфейса от рабочего потока.

Вы можете воспользоваться помощью этого урока http://crodrigues.com/updating-the-ui-from-a-background-thread-on-android/

или в качестве альтернативы вы можете использовать Asynctask, если вы не хотите, чтобы попасть в нить и обработчик материала.

Asynctask управляет этим материалом самого по себе, и вы можете обновить пользовательский интерфейс в onPostExecute() метод и так далее ..

Вы можете прочитать подробную информацию о asynctask в разработчике андроид сайта Google.

+0

[this stackoverflow link] (http://stackoverflow.com/questions/13491049/start-async-task-from-onhandleintent) также может помочь – Sunny

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); 
+0

Спасибо @Harshid, это меня больше, чем раньше, однако оно обновляет все экземпляров одновременно. – joe

 Смежные вопросы

  • Нет связанных вопросов^_^