我一直在努力解决这个问题。我有一个小部件,显示烹饪食谱的摘要。小部件是可点击的,因此每当用户点击它时,就会打开新活动,并附上该食谱的完整描述。问题是,有时单击小部件时会打开错误的活动。让我举个例子:
我尝试设置这三个标志的组合,这有助于解决问题的一半:
openIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
通过使用上面的标志,我设法显示正确的活动(A),直到我执行以下操作:
我希望我能够详细解释它。我真的很感谢你的帮助,因为这件事让我发疯了!
更新
这是我的待处理内容:
Intent openIntent = new Intent(context, ProfanityDefinition.class);
openIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
openIntent.setData(Uri.parse(openIntent.toUri(Intent.URI_INTENT_SCHEME)));
Bundle bundle = new Bundle();
bundle.putBoolean("widgetRequest", true);
openIntent.putExtras(bundle);
PendingIntent openPendingIntent = PendingIntent.getActivity(context, 0, openIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.widget_content, openPendingIntent);
由于
答案 0 :(得分:12)
显示创建PedningIntent
的代码。如果您将额外内容传递给您的活动,请注意两个仅由额外内容不同的意图被视为等效。您可能希望在创建PendingIntent.FLAG_CANCEL_CURRENT
时传递PendingIntent
,以确保您的意图不会被重复使用。