gpt4 book ai didi

android - onUpdate 的 appWidgetIds[] 中有哪些 ID?

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:06 26 4
gpt4 key购买 nike

做方法的数组appWidgetIds中的id

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

全部属于我的应用程序?

如果是这样,那么在我的 android 的必杀技中的某个地方会有一些 appwidgets,因为如果我删除所有 appwidgets,数组中仍然会保留一些 id,这些 id 不会显示在我的主屏幕上。 :-(

有没有办法删除所有小部件?

最佳答案

Weeelp,8 年后我又回到了 Android 开发(很惊讶地发现我已经对这个问题发表了评论),现在我有了一个真正的答案。这个问题最初发布后几年似乎才变得更加知名,但基本上:Android 中有一个错误几乎永远没有修复。

所有这些幻象 ID 都是您在某个时候开始创建的小部件的 appWidgetIds,但在小部件配置 Activity 中被错误地取消了

developer documentation 上,它包含用于确认小部件创建的代码示例:

Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();

仔细阅读下面的提示:

Tip: When your configuration Activity first opens, set the Activity result to RESULT_CANCELED, along with EXTRA_APPWIDGET_ID, as shown in step 5 above. This way, if the user backs-out of the Activity before reaching the end, the App Widget host is notified that the configuration was cancelled and the App Widget will not be added.

虽然 Android 接受 setResult(RESULT_CANCEL);(并且很多教程都使用它,我相信即使是官方文档也曾经有这样的示例代码),这是错误的。在不传递新 ID 的情况下,它作为那些神秘的幻影 ID 之一保留在系统中。

取消创建小部件的正确方法是 setResult(RESULT_CANCEL, resultValue);

关于android - onUpdate 的 appWidgetIds[] 中有哪些 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153898/

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