1

Jelly Bean でサイズが変更されたときにウィジェットを更新したいだけです。

だから私はこのコードを使用します:

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onAppWidgetOptionsChanged(Context context,
        AppWidgetManager appWidgetManager, int appWidgetId,
        Bundle newOptions) {
    Log.d("DEBUG_TAG", "I want to update Widget: "+appWidgetId);
    appWidgetManager.updateAppWidget(appWidgetId,
            getRemoteViews(context, minWidth, minHeight));
    Log.d("DEBUG_TAG", "Widget "+appWidgetId+"should have been updated");
    super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId,
            newOptions);
}

残念ながら何も起こりません。

私のlogcatは、予想どおりウィジェットを更新する必要があることを明確に示していますが、onUpdateは呼び出されません!

public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {

    final int N = appWidgetIds.length;
    Log.i("", "***Update "+N+" Widget*** ");
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];
        Log.i("", "***Widget*** "+appWidgetId );

しかし、何も起こりません。

ウィジェットを作成するときに ID が正しいことを確認しました (私の場合は ID は 29 です) onAppWidgetOptionsChanged が呼び出されるとログに 29 が表示されます ウィジェットが作成されるとログに 29 が表示されます

助けてくれてありがとう。

4

1 に答える 1

0

Commonsware の回答については、何か間違っている可能性がありますが、onAppWidgetOptionsChanged メソッドで onUpdate を手動で呼び出す必要があります。

updateAppWidget はまったく効果がありません (ウィジェット ID とリモートビューを再確認しました)

より良い解決策があれば幸いですが、それがウィジェットを更新できる唯一の方法です!

    int[] ids = {appWidgetId};
    onUpdate(context, AppWidgetManager.getInstance(context), ids);
于 2013-04-10T17:48:34.773 に答える