0

RemoteViewsforAppWidgetには、AdapterViewFlipperユーザーが のボタンをクリックしたときに反転するはずの がありますAppWidget。公式ドキュメントによると、これは でshowNextを呼び出すことによって行う必要がありRemoteViewsます。次に、ドキュメントの例としての機能を持つpartialUpdateAppWidgetAppWdiget更新する必要があります。私はこれを実装しようとしましたが、私が理解できないようなばかげた間違いを犯している可能性が最も高いです。showNext()

public class WidgetProvider extends AppWidgetProvider {

    public static final String NEXT = "next";

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        for (int appWidgetId : appWidgetIds) {
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);

            Intent nextIntent = new Intent(context, WidgetProvider.class);
            nextIntent.setAction(NEXT);
            views.setOnClickPendingIntent(R.id.next_button,
                    PendingIntent.getBroadcast(context, appWidgetId, nextIntent,
                            PendingIntent.FLAG_UPDATE_CURRENT));

            views.setRemoteAdapter(R.id.view_flipper, new Intent(context,
                    WidgetRemoteViewService.class));

            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
        super.onUpdate(context, appWidgetManager, appWidgetIds);
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(NEXT)) {
            RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                    R.layout.widget_layout);
            remoteViews.showNext(R.id.view_flipper);
            AppWidgetManager.getInstance(context).partiallyUpdateAppWidget(
                    AppWidgetManager.getInstance(context).getAppWidgetIds(
                            new ComponentName(context, WidgetProvider.class)),
                            remoteViews);
        }
        super.onReceive(context, intent);
    }
}

次のボタンに置​​き換えるpartiallyUpdateAppWidgetupdateAppWidget、向きが変わるか電話がスリープ状態になるまで機能し、最後に保存されたの再描画が強制されRemoteViewsます。これにより、私が犯している間違いは部分的な更新に関係していると思いますが、何が間違っているのかわかりません。

4

1 に答える 1

2

どの API レベルでテストしていますか?

問題は、この未解決の問題issuetracker.google.com/issues/37136552withpartiallyUpdateAppWidgetに関連している可能性があります

于 2017-09-20T12:09:27.627 に答える