gpt4 book ai didi

android - 将 RESULT_CANCELED 作为配置 Activity 的结果时未删除小部件

转载 作者:IT王子 更新时间:2023-10-28 23:31:10 25 4
gpt4 key购买 nike

我的小部件有一些问题。这是描述:

上下文:

我有一个家庭小部件。

当我添加它时,它会弹出一个配置 Activity ,用于为小部件设置一些参数。

如果我在完成配置Activity之前调用setResult(RESULT_OK, resultValue);,小部件就会被添加到Home中。

如果我通过将小部件拖到垃圾箱来删除它,则会调用我的 AppWidgetProvider 类中的 public void onDeleted(Context context, int[] appWidgetIds)。到目前为止一切顺利。

问题:如果配置 Activity 以结果代码 RESULT_CANCELED (setResult(RESULT_CANCELED);) 退出,则不会调用我的 AppWidgetProvider 类中的 public void onDeleted(Context context, int[] appWidgetIds)并且小部件保留在 Activity 小部件列表中。当我重新启动手机时,我的 AppWidgetProvider 类中的 onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) 被调用,并且在 int[] appWidgetIds 我拥有所有应该是的小部件(ID)取消(添加前已删除)+ Activity 的(实际显示在主页上的)。通过拖拽到垃圾箱中删除的 Widget 不会显示在此列表中。随着时间的推移,如果用户从配置 Activity 中取消,这个小部件 ID 列表会越来越大。

API 引用说明如下:“如果你使用Activity.setResult()返回RESULT_OK,就会添加AppWidget,你会收到一个针对这个AppWidget的ACTION_APPWIDGET_UPDATE广播。如果你返回RESULT_CANCELED,主机会取消添加,不显示这个AppWidget,你会收到ACTION_APPWIDGET_DELETED 广播。”

谁能给我一些提示?谢谢。

这是我的 list :

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<receiver android:name=".MytWidget" android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/my_widget_provider" />
</receiver>
<activity android:name=".ConfigurationActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
</application>

其余代码不相关,因为上面已经解释过了(我无权发布它)。

最佳答案

我遇到了同样的问题,我是在 onPause 事件中这样做的

public void removeWidget(int appWidgetId) {
AppWidgetHost host = new AppWidgetHost(Config.this, 1);
host.deleteAppWidgetId(appWidgetId);
}

检查了小部件 ID,小部件已被删除。如果您只有一个应用小部件主机,则主机 ID 并不重要。

private boolean canceled = true;

@Override
protected void onPause() {
if(canceled) {
removeWidget(appWidgetId);
}
super.onPause();
}

在确定点击中,我将 canceled 设置为 false

关于android - 将 RESULT_CANCELED 作为配置 Activity 的结果时未删除小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4393144/

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