8

私のAppWidgetProviderでは、次のことを行います。

@Override
public void onReceive(Context ctx, Intent intent) {
    final String action = intent.getAction();
    if (action.equals(NEXTPAGE_ACTION)) {
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(ctx);
        RemoteViews rv = new RemoteViews(ctx.getPackageName(), R.layout.widget_layout);
        rv.setViewVisibility(R.id.page1, View.GONE);
        rv.setViewVisibility(R.id.page2, View.VISIBLE);
    final int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
    appWidgetManager.updateAppWidget(appWidgetId, rv);
    }
}

updateAppWidgetを使用してレイアウトを更新していますが、変更は実際にはUIに反映されていません。何がうまくいかない可能性がありますか?どうもありがとう!

4

2 に答える 2

1

ウィジェットアプリでも同じ問題があります。あなたがそのようになった場合、私はappWidgetIdを間違って検出します。初めて UI を更新するときは、appWidgetIdを静的変数に追跡する必要があります。そして、その変数を更新 UI の共通のappWidgetIdとして使用できます。

または、 onReceiver関数で以下のコードを試すことができます。

final ComponentName provider = new ComponentName(context, this.getClass()); appWidgetManager.updateAppWidget(provider, views);

どのビューがRemoteViewsか。

ありがとう、私の英語でごめんなさい。

于 2014-12-05T04:00:09.397 に答える