Вопрос

Опубликовано: понедельник, 30 ноября 2009 г., 17:08 Заголовок сообщения: Простая проблема с дополнительными возможностями Здравствуйте,

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

Вот мое намерение: Java:

Intent changeData = new Intent("com.tonycosentini.mintdroid.CHANGE_DATA"); 
changeData.putExtra("widget_id", currentWidgetId); 
PendingIntent changeDataPendingIntent = PendingIntent.getBroadcast(this, 0, changeData, 0); 
//This will return the correct value, but if I call it in my onreceive() method it won't.
Log.v(TAG, "stored id is: " + changeData.getIntExtra("widget", 0);

Это правильно хранит идентификатор виджета, но когда вызывается метод изменения данных, идентификатор виджета, который читается из намерения, является первым экземпляром виджета. То есть существует цикл for, который генерирует все виджеты, и независимо от того, к какому виджету вы прикоснетесь, полученный идентификатор виджета всегда является первым идентификатором виджета в первом виджете.

У кого-нибудь есть идеи, как это решить? Надеюсь, я не сказал это слишком плохо.

Спасибо за чтение, Тони

Это было полезно?

Решение

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

Об этом немного поговорим в группе Google Android: http://groups.google.com/group/android-developers/browse_thread/thread/81100da6ddb21136

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top