2009-06-21 2 views
0

Я написал панель инструментов Mac OS X, чтобы показать чутье StackOverflow и других людей.Несколько экземпляров виджета панели мониторинга не выдерживают обновления виджета. Любой способ предотвратить это?

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

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

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

Вы можете найти виджет в вопросе, в том числе файлы проекта, на http://widget.huxhorn.de

I 's изменил код в remove() на установите, а вместо укажите нуль, как это предлагается ниже, но это тоже не помогает.
Какая у меня ошибка? Помогите! Я застрял!


Другая проблема моего виджета было исправлено:
я случайно назвал

widget.preferenceForKey(null, dashcode.createInstancePreferenceKey(userIdPrefKey)); 

вместо

widget.preferenceForKey(dashcode.createInstancePreferenceKey(userIdPrefKey)); 

, но это теперь установлено (еще не выпущен).

ответ

0

Я думаю, что ваши вызовы setPreferenceForKey и preferenceForKey выглядят странно. Откуда берутся null. Не должны ли они похожи на

widget.preferenceForKey(dashcode.createInstancePreferenceKey(userIdPrefKey)) 
widget.setPreferenceForKey(value, dashcode.createInstancePreferenceKey(userIdPrefKey)); 

синтаксис с null

widget.setPreferenceForKey(null, dashcode.createInstancePreferenceKey(userIdPrefKey)) 

в remove() удалить ли предпочтение? Это объяснит вам ситуацию, я думаю. При обновлении remove() получает приоритет и, следовательно, при перезапуске виджета предпочтения ушли.

Я думаю, что есть только один способ сохранить ваши предпочтения во время обновления. Создайте один ключ предпочтения, не полагаясь на dashboard.createInstancePreferenceKey, но вместо этого подумайте о уникальном значении ключа.

В этом предпочтительном ключе вы можете сохранить все когда-либо введенные идентификаторы пользователя (любым экземпляром) с растущим списком (например, с запятой). Когда экземпляр виджета открывается, widget.preferenceForKey(dashcode.createInstancePreferenceKey(userIdPrefKey)) еще не установлен, вы можете позволить пользователю выбрать один из них, предоставив ему выбор или такую ​​вещь.

Я просто думал, что процесс обновления достаточно хорош для переноса предпочтения к новой проверке. Даже когда вы не удаляете предпочтения, я думаю, что виджет.идентификатор (createInstancePreferenceKey) изменится, и вы не сможете получить доступ к «старым» настройкам.

+0

Хорошая идея, я попробовал, что и изменил код - снова - установить настройки правильные значения ... делает не помогло :(Этот код изначально предназначался для очистки после виджета, чтобы не было никаких неиспользуемых префов, оставшихся от удаленных экземпляров виджета ... – Huxi

+0

Установка значений в null была в порядке. Создается один новый экземпляр в случае обновления, поэтому удаление значений предыдущих экземпляров - это путь, я думаю. – Huxi

+0

Я знаю об этом. Предлагаемое другое решение в измененном ответе – jitter

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