我正在尝试将多个视图添加到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。
答案 0 :(得分:3)
不需要随机性的更简单的解决方案是,您可以将所有额外内容嵌入到数据字符串中,以使意图唯一:
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
答案 1 :(得分:-1)
我找到了解决方案here。这完全可行。
我只需要使用launchIntent.setAction("" + Math.random())
来使每个Intent对系统都是唯一的。 (附加内容不会使Intent唯一,因为Android不会检查它们是否不同)。