2012-12-27 8 views
17

Ich möchte mein Widget jedes Mal aktualisieren, wenn es in der Größe geändert wird. Ich fand heraus, dass dies in getan wird:Wie verwendet man OnAppWidgetOptionsChanged() in einem Widget?

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

Aber ich kann nicht herausfinden, wie das Widget in sie zu aktualisieren. Ich habe versucht, das Widget neu zu zeichnen, indem ich alles anrufe, was ich in onUpdate() eingegeben habe, aber es funktioniert nicht. Wie kann ich das Bündel nutzen?

Antwort

32

Ich möchte mein Widget jedes Mal aktualisieren, wenn es in der Größe geändert wird.

Cool!

Ich fand heraus, dass diese genau in onAppWidgetOptionsChanged()

mehr getan wird, wenn Sie die richtigen Aktionen in Ihrem <intent-filter> haben, auf Android 4.1+ Geräte, werden Sie über onAppWidgetOptionsChanged() über Ereignisse die Größe erfahren.

Aber ich kann nicht herausfinden, wie man das Widget darin aktualisieren kann.

Sie aktualisieren es auf die gleiche Weise, wie Sie es in onUpdate() aktualisieren. Rufen Sie updateAppWidget() auf der AppWidgetManager mit einer entsprechenden RemoteViews.

Ich habe versucht, das Widget neu zu zeichnen, indem ich alles aufrufe, das ich in OnUpdate() einfüge, aber es funktioniert nicht.

"Es funktioniert nicht" ist keine besonders effektive Beschreibung Ihrer Symptome.

Wie kann ich das Bündel nutzen?

Für einen Bundle namens newOptions, können Sie Ihren neuen Größenbereich erfahren Sie über:

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) 

Zum Beispiel this sample project ein AppWidgetProvider enthalten, die einfach diese Werte in eine Zeichenfolge gießt und verwendet, dass ein aktualisieren TextView. Das Ergebnis sieht so aus:

Resize Widget, During Resize Operation

+0

Vielen Dank! : D –

+0

Nur zur Info, dieses Beispiel funktioniert nicht auf meinem Galaxy S3 laufenden Build-Nummer JZ054K.I9300XXXELL4. Es funktioniert jedoch wunderbar auf meinem Nexus 4. Danke! – Justin

+0

@Justin: Was bedeutet "nicht funktioniert"? – CommonsWare

Verwandte Themen