Виджет не удаляется при передаче RESULT_CANCELED в качестве результата действия конфигурации

У меня проблемы с виджетами. Вот описание:

Контекст:

У меня есть домашний виджет.

Когда я добавляю его, появляется конфигурационное действие для установки некоторых параметров для виджета.

Если я вызываю setResult (RESULT_OK, resultValue); перед завершением действия по настройке виджет добавляется на главную.

Если я удалю виджет, перетащив его в корзину, public void onDeleted (Context context, Пока все хорошо.

Проблема: Если действие конфигурации завершается с кодом результата RESULT_CANCELED ( setResult (RESULT_CANCELED); ), public void onDeleted (Context context, int [] appWidgetIds) из моего класса AppWidgetProvider не вызывается и виджет остается в списке активных виджетов. Когда я перезагружаю телефон, вызывается onUpdate (Context context, AppWidgetManager appWidgetManager, int [] appWidgetIds) из моего класса AppWidgetProvider, а в int [] appWidgetIds у меня есть все виджеты (идентификаторы), которые должны быть отменены (удаляются перед добавлением) + активные (те, которые фактически отображаются на главной странице). Виджеты, которые были удалены путем перетаскивания в корзину, не отображаются в этом списке. Со временем этот список идентификаторов виджетов становится все больше и больше, если пользователь отменяет действие конфигурации. "Если вы вернете RESULT_OK с помощью Activity.setResult (), AppWidget будет добавлен, и вы получите широковещательную рассылку ACTION_APPWIDGET_UPDATE для этого AppWidget. Если вы вернете RESULT_CANCELED, хост отменит добавление и не отобразит этот AppWidget, и вы получите трансляция ACTION_APPWIDGET_DELETED. "

Кто-нибудь может мне подсказать? Спасибо.

Вот мой манифест:

<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>

Остальная часть кода не имеет отношения, поскольку она была объяснена выше (и у меня нет разрешения на ее публикацию).

19
задан FiDo 8 December 2010 в 22:47
поделиться