1

我只是想在 Jelly Bean 中调整大小时更新我的​​小部件。

所以我使用这段代码:

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onAppWidgetOptionsChanged(Context context,
        AppWidgetManager appWidgetManager, int appWidgetId,
        Bundle newOptions) {
    Log.d("DEBUG_TAG", "I want to update Widget: "+appWidgetId);
    appWidgetManager.updateAppWidget(appWidgetId,
            getRemoteViews(context, minWidth, minHeight));
    Log.d("DEBUG_TAG", "Widget "+appWidgetId+"should have been updated");
    super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId,
            newOptions);
}

不幸的是,什么也没发生。

我的 logcat 清楚地说应该更新小部件,正如预期的那样,但永远不会调用 onUpdate!

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

    final int N = appWidgetIds.length;
    Log.i("", "***Update "+N+" Widget*** ");
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];
        Log.i("", "***Widget*** "+appWidgetId );

但什么也没有发生。

我检查了当我创建我的小部件时,ID 是否正确(在我的情况下,id 是 29) 29 在调用 onAppWidgetOptionsChanged 时显示在日志中 29 在创建小部件时显示在日志中

非常感谢您的帮助。

4

1 回答 1

0

关于 Commonsware 的答案,我可能做错了什么,但我需要在 onAppWidgetOptionsChanged 方法中手动调用 onUpdate 。

updateAppWidget 完全没有效果(我仔细检查了小部件 ID 和远程视图)

我很高兴听到更好的解决方案,但这是我可以让小部件刷新的唯一方法!

    int[] ids = {appWidgetId};
    onUpdate(context, AppWidgetManager.getInstance(context), ids);
于 2013-04-10T17:48:34.773 回答