gpt4 book ai didi

android - appWidgetIds 只包含一个 id

转载 作者:行者123 更新时间:2023-11-30 01:16:58 24 4
gpt4 key购买 nike

我有 appWidgetProvider 可以更新位于主屏幕上的每个小部件的 View ,并且每个小部件都有一个按钮可以触发更新 View ,但显然无论我按下哪个按钮只在哪个小部件上并且总是其中一个正在更新

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);

for (int widgetId: appWidgetIds){
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget);

Intent update = new Intent(context, QuotesAppWidgetProvider.class);
Bundle bundle = new Bundle();
bundle.putIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[]{widgetId});
update.putExtras(bundle);
update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);

PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, update, 0);

views.setOnClickPendingIntent(R.id.widget_refresh, pendingIntent);
appWidgetManager.updateAppWidget(widgetId, views);
}
}

假设我有 id=30 的小部件和 id=31 的小部件,我单击 widget30 上的刷新按钮,然后正在更新 widget30,这是需要的,但是当我单击 widget31 上的刷新按钮时,widget30 正在更新为不知道是什么原因。

最佳答案

我花了一点时间,但我终于弄明白了。所有的小部件都有具有相同请求代码的未决 Intent ,并且由于它被广播,所以它被一个覆盖了所有的小部件。这是对我有帮助的行:

PendingIntent pendingIntent = PendingIntent.getBroadcast(context, widgetId, update, PendingIntent.FLAG_UPDATE_CURRENT);

关于android - appWidgetIds 只包含一个 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37702443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com