Настройка виджетов с разным содержанием
Мое приложение создает множество виджетов одного типа, но с разным содержанием. Когда пользователь нажимает на один виджет, важно знать 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)));
Вот почему вы всегда получаете одинаковый идентификатор на всех виджетах