2012-12-27 20 views
17

ウィジェットがサイズ変更されるたびに更新したいと思います。ウィジェットでonAppWidgetOptionsChanged()を使用するには?

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

しかし、私はそれでウィジェットを更新する方法を見つけることができません:私はこれがで行われていることを考え出しました。私はonUpdate()に入れたすべてを呼び出してウィジェットを再描画しようとしましたが、うまく機能しません。バンドルを使用するにはどうしたらいいですか?

答えて

32

私はウィジェットがサイズ変更されるたびに更新したいと思います。

クール!

は、私はあなたの <intent-filter>右のアクションを持っている場合は、このは、Android 4.1以降の端末上で、あなたはおよそ onAppWidgetOptionsChanged()経由でサイズ変更イベントを見つけるでしょう、より正確に onAppWidgetOptionsChanged()

で行われていることを考え出しました。

しかし、私はそれのウィジェットを更新する方法を見つけることができません。

onUpdate()と同じ方法で更新します。 AppWidgetManagerupdateAppWidget()に、適切なRemoteViewsと電話してください。

私はonUpdate()に入れたものすべてを呼び出してウィジェットを再描画しようとしましたが、動作しません。

「それは機能していません」とは、症状の特に効果的な説明ではありません。

どうすればこのバンドルを使用できますか? newOptionsという名前Bundleについては

、あなたは経由であなたの新しいサイズの範囲を見つけることができます。たとえば

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) 

this sample projectは、単に文字列にそれらの値を注ぐと、更新することを利用しAppWidgetProviderが含まれていますTextView。結果は以下のようになります。

Resize Widget, During Resize Operation

+0

ありがとうございました! :D –

+0

この例は、ビルド番号JZ054K.I9300XXXELL4を実行しているGalaxy S3では機能しません。しかし、それは私のNexus 4上で美しく動作します。ありがとうマーク! – Justin

+0

@ジャスティン:「うまくいかない」とはどういう意味ですか? – CommonsWare

関連する問題