我的应用会创建许多相同类型的小部件,但内容不同。当用户点击一个小部件时,了解widgetId
非常重要,因此我知道要更新的内容。
我的方式似乎总是错误的,因为我的PendingIntent
被覆盖了。所以我总是得到相同的EXTRA_APPWIDGET_ID
而不是n个不同的OnClick
。
这是我的代码,我为// edit intent
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.base_info_widget);
Intent editIntent = new Intent(context,MainActivity.class);
editIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_CLEAR_TOP);
editIntent.putExtra(GlobalVariables.COMMAND_KEY_ACTION,GlobalVariables.COMMAND_VALUE_EDIT);
editIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId);
Log.d(MY_TAG, "putExtra EXTRA_APPWIDGET_ID="+ Integer.toString(appWidgetId));
PendingIntent pendingEditIntent = PendingIntent.getActivity(context, 0, editIntent, PendingIntent.FLAG_CANCEL_CURRENT);
views.setOnClickPendingIntent(R.id.layout_wrapper, pendingEditIntent);
设置PendingIntent时的部分。
{{1}}
我希望我的问题很明确。我该如何解决这个问题?
答案 0 :(得分:0)
让你的意图独一无二:
editIntent.setData(Uri.parse(editIntent.toUri(Intent.URI_INTENT_SCHEME)));
这就是为什么你在所有小部件上总是得到相同的id