Android Appwidget: addOnClickPendingIntent для удаленных представлений в ViewFlipper - PullRequest
0 голосов
/ 27 декабря 2011

Я пытаюсь добавить несколько видов в ViewFlipper, который находится в AppWidget (виджет Homescreen).Вот мой код:

for (Item item : list) {
    RemoteViews rv = new RemoteViews(getPackageName(),
            R.layout.widget_item);

    rv.setTextViewText(R.id.txtTitle, item.getTitle());

    Intent launchIntent = new Intent(this, ActItemViewer.class);
    launchIntent.putExtra("id", item.getId());

    PendingIntent pendingIntent = PendingIntent.getActivity(
            this, id, launchIntent, 0);
    rv.setOnClickPendingIntent(R.id.txtTitle, pendingIntent);

    views.addView(R.id.viewFlipper, rv);
}

Этот код работает нормально, все элементы отображаются в моем виджете.Но когда я нажимаю на элемент в ViewFlipper, ActItemViewer всегда открывается с одним и тем же идентификатором.Поэтому я думаю, что установлен только первый PendingIntent.

Есть ли способ иметь разные onClick-Events для каждого дочернего элемента в ViewFlipper?Я видел некоторые виджеты с такой функциональностью, например, «Spiegel Online» -Widget (немецкий) или Market-Widget.

Ответы [ 2 ]

3 голосов
/ 24 мая 2012

Более простое решение, не требующее случайности, состоит в том, что вы можете встроить все дополнительные элементы в строку данных, чтобы сделать намерение уникальным:

intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
0 голосов
/ 03 февраля 2012

Я нашел решение здесь . Это работает идеально.

Мне нужно было использовать только launchIntent.setAction("" + Math.random()), чтобы сделать каждое намерение уникальным для системы. (Дополнения не делают Intent уникальным, так как Android не проверяет, отличаются ли они).

...