Подтвердить что ты не робот

Как использовать onAppWidgetOptionsChanged() в виджетах?

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

onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions)

Но я не могу узнать, как обновить виджет в нем. Я попытался перерисовать виджет, вызвав все, что я ввел в onUpdate(), но он не работает. Как я могу использовать пакет?

4b9b3361

Ответ 1

Я хочу обновить свой виджет каждый раз, когда он будет изменен.

Круто!

Я понял, что это сделано в onAppWidgetOptionsChanged()

Более точно, если у вас есть правильные действия на вашем устройстве <intent-filter>, на устройствах Android 4.1+, вы узнаете об изменениях размера с помощью onAppWidgetOptionsChanged().

Но я не могу узнать, как обновить виджет в нем.

Вы обновляете его так же, как вы его обновляете в onUpdate(). Вызовите updateAppWidget() на AppWidgetManager с соответствующим RemoteViews.

Я попытался перерисовать виджет, вызвав все, что я положил в onUpdate(), но он не работает.

"он не работает" не является особенно эффективным описанием ваших симптомов.

Как я могу использовать пакет?

Для a Bundle с именем newOptions вы можете узнать свой новый диапазон размеров с помощью:

newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH)
newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH)
newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT)
newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT)

Например, этот примерный проект содержит AppWidgetProvider, который просто вставляет эти значения в строку и использует это для обновления TextView, Результат выглядит следующим образом:

Resize Widget, During Resize Operation