У меня есть виджет, показывающий 10 изображений. При нажатии на одно из этих изображений открывается действие, показывающее некоторую информацию, соответствующую этому изображению. Данные хранятся в базе данных sqlite.Ожидаемые незарегистрированные виджеты
Каждую неделю эти изображения меняются (его пул> 100 различных объектов, каждую неделю отображается другое подмножество из них).
метод My OnUpdate выглядит следующим образом:
List<Champion> champions = // a list of 10 champions out of 100 fetched from db
int[] imageIds = // drawable ids for the 10 champions
// creating the pending intents
PendingIntent[] pIntents = new PendingIntent[champions.size()];
for(int i = 0; i < champions.size(); i++)
{
Intent intent = new Intent(context, ChampionActivity.class);
intent.putExtra(ChampionActivity.KEY_ID, champions.get(i).getChampionId());
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
pIntents[i] = PendingIntent.getActivity(context, i, intent, 0);
}
// updating widgets with the new images and intents
for(int widgetId : appWidgetIds)
{
RemoteViews view = new RemoteViews(
context.getPackageName(),
R.layout.widget
);
for(int i = 0; i < imageViewIds.length; i++)
{
view.setImageViewResource(imageViewIds[i], imageIds[i]);
view.setOnClickPendingIntent(imageViewIds[i], pIntents[i]);
}
appWidgetManager.updateAppWidget(widgetId, view);
}
Этот виджет установлен, чтобы обновить себя каждые 30 минут. Обновление изображений отлично работает, но как-то ожидающие намерения, похоже, не обновляются.
Пример:
- Пользователь добавляет виджет к своему рабочему экрану, когда показан чемпион A.
- Через 30 минут, чемпион заменяются чемпион B, изображение обновляется соответственно
- Щелчок на чемпион B по-прежнему ведет пользователь к Чемпиону (умысел экстра идентификатор, а не идентификатор О.Б. B)
Что я делаю неправильно?
Заранее спасибо
+1: это кажется более подходящим способом обработки этой проблемы. Тем не менее, мне интересно, вызывает ли использование фиксированного кода запроса несогласованность при наличии нескольких виджетов? – ozbek
@shoerat Спасибо, что подняли вопрос, Вы правы. В случае нескольких экземпляров можно использовать 'appWidgetId'. Я обновил свой ответ. –