2012-07-28 7 views
2

У меня есть виджет с макетом imageView. Представление должно быть изменено на основе некоторой активности. Итак, всякий раз, когда это происходит, я вызываю sendBroadcast() с действием, установленным на UPDATE_WIDGET. Однако код onReceive() в коде виджета не вызывается. Ниже мой код.Android: Виджет onReceive() не получает вызов

public class TaskWidget extends AppWidgetProvider { 
    ... 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "widget update", 2000).show(); 
     RemoteViews views = new RemoteViews(context.getPackageName(), 
       R.layout.searchwidget); 
     if (intent.getAction().equals(UPDATE_WIDGET)) { 
      views.setImageViewResource(R.id.newImage, R.drawable.Pic1); 
     } 
     super.onReceive(context, intent); 
    } 
} 

В манифесте

<receiver 
    android:name="com.rahul.testwidget.TaskWidget" 
    android:label="Task Widget" > 
    <intent-filter> 
     <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
     <action android:name="com.rahul.UPDATE_WIDGET" /> 
    </intent-filter> 

    <meta-data 
     android:name="android.appwidget.provider" 
     android:resource="@xml/widget" /> 
</receiver> 
+1

Какое исправление? – zode64

ответ

0

Я думаю, что ваше имя действие должно быть com.rahul.UPDATE_WIDGET вместо UPDATE_WIDGET.

0

вам необходимо обновить ваш макет виджета использовать этот код только Befor super.onReceive(context, intent);

ComponentName widget = new ComponentName(context, SimpleWidget.class); 
AppWidgetManager.getInstance(context).updateAppWidget(widget, views); 
0

Если вы отправляете радиопередачу от слушателя на виджете вам нужно создать PendingIntent для вещания.

PendingIntent sentPI = PendingIntent.getBroadcast(activity, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT); 

Кроме того, вы, похоже, не можете прикрепить две незавершенные намерения к кнопке в виджетах.

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