Android Appwidget: addOnClickPendingIntent for RemoteViews i



我试图将多个视图添加到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被设置。

是否有任何方法有不同的onclick事件在ViewFlipper的每一个孩子?我曾见过一些具有此功能的widget,例如"Spiegel Online"-Widget(德语),或者Market-Widget。

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

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

我在这里找到了解决方案。

我只需要使用launchIntent.setAction("" + Math.random())使每个Intent对系统来说是唯一的。(这些额外的功能不会使Intent独一无二,因为Android不会检查它们是否不同)。

最新更新