2014-11-07 2 views
0

У меня есть виджет и есть кнопка. Строка меток кнопок представлена ​​в AsyncHTTPTask. Я бы изменил фон кнопки черный, прежде чем начать подключение к Интернету, а затем получить кнопку изменения данных BG на зеленый. Экзамен не работает. Я не вижу черный статус, только что закончил зеленый статус.Как изменить кнопку фона дважды во время выполнения в виджетах?

 remoteViews.setInt(
        context.getResources().getIdentifier("widget_button" + i, "id", context.getPackageName()), 
        "setBackgroundResource", 
        R.drawable.button_draw_black_gradient 
        ); 
     SystemClock.sleep(3000); 
     try { 
      jsonStr = new AsyncHTTPTask().execute(SURL).get(); 
     } catch (InterruptedException e) { 
     .... 
     remoteViews.setInt(
        context.getResources().getIdentifier("widget_button" + i, "id", context.getPackageName()), 
        "setBackgroundResource", 
        R.drawable.button_draw_green_gradient 
        ); 

ответ

0

Я решить мою проблему сейчас. Эта часть делает силы upadte:

ComponentName thisWidget = new ComponentName(context,FooBar.class); 
AppWidgetManager manager = AppWidgetManager.getInstance(context); 
manager.updateAppWidget(thisWidget, remoteViews); 
0

Попробуйте запросить раскладку мнение, и вручную обновить вид с помощью вызова invalidate:

remoteViews.requestLayout(); 
    remoteViews.setInt(
       context.getResources().getIdentifier("widget_button" + i, "id", context.getPackageName()), 
       "setBackgroundResource", 
       R.drawable.button_draw_black_gradient 
       ); 
    remoteViews.invalidate(); 

И я думаю, что есть что-то не так с вашим кодом. Вы должны изменить кнопку на зеленый, если AsyncTask имеет завершено его задача.

Так переместить этот код в onPost:

remoteViews.requestLayout(); 
    remoteViews.setInt(
       context.getResources().getIdentifier("widget_button" + i, "id", context.getPackageName()), 
       "setBackgroundResource", 
       R.drawable.button_draw_green_gradient 
       ); 
    remoteViews.invalidate(); 
+0

Не работает :("Метод Invalidate() не определен для RemoteViews типа" View имеет аннулирование метод, но RemoteView не аннулирует метод. – Cipo

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