Частично UpdateAppWidget на RemoteViews не работает

В RemoteViews для AppWidget у меня есть AdapterViewFlipper который должен перевернуться, когда пользователь нажимает кнопку в AppWidget, Согласно официальной документации, это можно сделать, позвонив в showNext на RemoteViews, AppWdiget затем следует обновить с помощью частично UpdateAppWidget, который даже имеет 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);
    }
}

При замене partiallyUpdateAppWidget с updateAppWidget следующая кнопка работает, пока ориентация не изменится или телефон не перейдет в спящий режим, что вызывает перерисовку последнего сохраненного RemoteViews, Это заставляет меня поверить, что ошибка, которую я совершаю, связана с частичным обновлением, но я не могу понять, что я делаю неправильно.

1 ответ

Решение

На каком уровне API вы тестируете?

Может быть проблема с withpartiallyUpdateAppWidget связан с этим открытым вопросом. http://issuetracker.google.com/issues/37136552

Другие вопросы по тегам