Установка фона AppWidget для одного виджета также влияет на других

Файл макета для моего виджета начинается с верхнего уровня с помощью:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="@dimen/widget_margin" android:id="@+id/widget" android:background="#20000000" > 

Таким образом, исходный фон является полупрозрачным. Затем в какой-то момент во время выполнения я вызываю следующее, чтобы сделать фон полностью прозрачным:

 remoteViews.setInt(R.id.widget, "setBackgroundColor", Color.parseColor("#00000000")); appWidgetManager.updateAppWidget(appWidgetId, remoteViews); 

Пока это работает, я обнаружил, что при добавлении другого виджета фон для этого виджета начинается как полностью прозрачный, а не полупрозрачный, как в макете xml. Это похоже на то, что настройка фона для одного виджета изменила его для всех, включая новые виджеты, добавленные впоследствии.

Теперь это странно, потому что в то же время, что и выше, я также добавляю растровое изображение в виджет (через RemoteViews ) с помощью:

 remoteViews.setImageViewBitmap(R.id.imageView, bmp); 

… и это растровое изображение не появляется во всех последующих виджетах, поэтому основной метод, который я использую, кажется, звучит.

Так почему же фон распространяется на другие виджеты?

EDIT, чтобы добавить вывод appWidgetId в соответствии с запросом в комментарии:

В основном это происходит от Intent , например, в onCreate() для настройки Activity для виджета:

 Intent intent = getIntent(); Bundle extras = intent.getExtras(); int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 

В классе AppWidgetProvider вы переопределяете метод onUpdate . Последним параметром является appWidgetIds который представляет собой массив активных идентификаторов виджетов. Скорее всего, вы реализовали изменение цвета фона, проходящего через этот массив для каждого widgetId. Чтобы иметь возможность определять пользовательский фон для каждого виджета, вам необходимо реализовать логику сопоставления необходимого фона с конкретным widgetId и соблюдать эту логику внутри цикла.

Intereting Posts
IllegalArgumentException: нет представления для id для фрагмента – ViewPager в ViewPager Как отключить раскрывающееся меню AutoCompleteTextView при прокрутке моего автозаполнения? Android 6.0 Запрещено разрешение записи файла Проблема с высотой RecyclerView в API 17 и API 16 – Android Как сообщить ProGuard о сохранении личных полей без указания каждого поля Реализация onScrollListener для обнаружения конца прокрутки в ListView Панель прогресса в строке заголовка Альтернатива FusedLocationProviderApi Электронная почта с внутреннего хранилища Изображения, добавленные в программу AnimationDrawable для программной утечки MainActivity просочилась в ServiceConnection android.speech.SpeechRecognizer$Connection@414ee400, которая была первоначально связана здесь Android – Как вызвать широковещательный приемник для вызова метода onReceive ()? Пользовательское правило Lint, не указанное в студии eclipse / android Как запретить обезьяне открывать строку состояния? В разработке Android какие файлы должны быть привязаны к репозиторию?