Android AppWidget: новый экземпляр замораживает старый - PullRequest
1 голос
/ 13 марта 2012

Я использую следующее:

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

        Intent configIntent = new Intent(context, ConfigureActivity.class);
        configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
        configIntent.setAction(ACTION_UPDATE);

        PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, PendingIntent.FLAG_CANCEL_CURRENT);
        remoteViews.setOnClickPendingIntent(R.id.config_button, configPendingIntent);

        Intent smsIntent = new Intent(context, TurboSMSWidget.class);
        smsIntent.putExtra(APP_ID, appWidgetId);
        smsIntent.setAction(ACTION_SEND);

        PendingIntent smsPendingIntent = PendingIntent.getBroadcast(context, 0, smsIntent, PendingIntent.FLAG_CANCEL_CURRENT);
        remoteViews.setOnClickPendingIntent(R.id.send_button, smsPendingIntent);

        appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
    }
}

Создание виджета прекрасно работает, но каждый раз, когда я запускаю новый виджет, старый отключается.Я больше не могу пользоваться кнопками, это похоже на зависание на домашнем экране.Что не так с этим кодом?

1 Ответ

1 голос
/ 13 марта 2012

Я думаю, что проблема в PendingIntent. Новый экземпляр PendingIntent перезаписывает старый. Вы должны использовать уникальный Intent для PendingIntent. Вот обсуждения, которые могут вам помочь: Множественные экземпляры только виджета Обновление последнего виджета , Как правильно передать уникальные дополнения в ожидающее намерение? , уведомление об ожидающем намерении Android проблема

...