Android Appwidget:ViewFlipper中RemoteViews的addOnClickPendingIntent

时间:2011-12-27 11:27:34

标签: android onclick viewflipper android-appwidget android-pendingintent

我正在尝试将多个视图添加到ViewFlipper,它位于AppWidget(主屏幕小部件)中。 这是我的代码:

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始终以相同的“id”打开。所以我认为只设置了第一个PendingIntent。

有没有办法为ViewFlipper中的每个Child提供不同的onClick-Events? 我见过一些具有此功能的小部件,例如“Spiegel Online”-Widget(德语)或Market-Widget。

2 个答案:

答案 0 :(得分:3)

不需要随机性的更简单的解决方案是,您可以将所有额外内容嵌入到数据字符串中,以使意图唯一:

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

答案 1 :(得分:-1)

我找到了解决方案here。这完全可行。

我只需要使用launchIntent.setAction("" + Math.random())来使每个Intent对系统都是唯一的。 (附加内容不会使Intent唯一,因为Android不会检查它们是否不同)。