appWidgetManager.updateAppWidget无效

时间:2013-04-10 12:12:47

标签: android widget

我只是想在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 clealy说应该按预期更新小部件,但是从不调用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 );

但没有任何事情发生。

我已经检查过,当我创建我的Widget时,ID是正确的(在我的情况下id是29) 调用onAppWidgetOptionsChanged时,日志中显示29 创建窗口小部件时,日志中显示29;

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

updateAppWidget绝对没有效果(我仔细检查了widget ID和remoteview)

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

    int[] ids = {appWidgetId};
    onUpdate(context, AppWidgetManager.getInstance(context), ids);