Настройка виджетов с разным содержанием

Мое приложение создает множество виджетов одного типа, но с разным содержанием. Когда пользователь нажимает на один виджет, важно знать widgetIdтак что я знаю контент для обновления.

Мой путь кажется совершенно неправильным, потому что мой PendingIntent переопределяется. Так что я всегда получаю одно и то же EXTRA_APPWIDGET_ID вместо п разных.

Вот мой код, часть, когда я устанавливаю PendingIntent для моего OnClick,

// edit intent
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.base_info_widget);
Intent editIntent = new Intent(context,MainActivity.class);
editIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_CLEAR_TOP);         
editIntent.putExtra(GlobalVariables.COMMAND_KEY_ACTION,GlobalVariables.COMMAND_VALUE_EDIT);
editIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId);
Log.d(MY_TAG, "putExtra EXTRA_APPWIDGET_ID="+ Integer.toString(appWidgetId));
PendingIntent pendingEditIntent = PendingIntent.getActivity(context, 0, editIntent, PendingIntent.FLAG_CANCEL_CURRENT);
views.setOnClickPendingIntent(R.id.layout_wrapper, pendingEditIntent);

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

1 ответ

Решение

Сделайте свое намерение уникальным:

 editIntent.setData(Uri.parse(editIntent.toUri(Intent.URI_INTENT_SCHEME)));

Вот почему вы всегда получаете одинаковый идентификатор на всех виджетах

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