Android updateAppWidget不会更新

时间:2014-05-16 22:04:39

标签: android android-appwidget

我的Android application

问题严重

致电

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
appWidgetManager.updateAppWidget(appWidgetId, getWidgetView(context, appWidgetId));
public void onReceive(Context context, Intent intent)方法中的

根本没有结果。 生成的RemoteViews看起来有效(以编程方式说)但widget未更新(它保留旧值)。

我发现了一些类似的问题,但没有人回答:

4 个答案:

答案 0 :(得分:5)

解决:

解决方案非常奇怪,但使用

appWidgetManager.updateAppWidget(new ComponentName(context, CustomWidgetProvider.class), getWidgetView(context, appWidgetId));

解决了我的问题。

答案 1 :(得分:4)

@Manitoba发布的解决方案没有完全正常工作,这是放在onUpdate内的工作代码:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
// do your stuff
appWidgetManager.updateAppWidget(new ComponentName(context, CustomWidgetProvider.class), views);

希望这会有所帮助:)

答案 2 :(得分:1)

我为xPeria更新小部件所发现的是添加后         .putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,allWidgetIds);

这一行:

<intent>.setData(Uri.withAppendedPath(
        Uri.parse("imgwidget://widget/id/"),
        String.valueOf(allWidgetIds)));

在哪里

Intent active = new Intent(context, <widget_provider>.class);

答案 3 :(得分:0)

尝试了所有updateAppWidget()重载,但它无法正常工作 - 无论是来自onReceive()还是Activity。 奇怪的是,notifyAppWidgetViewDataChanged()确实在同一场景中起作用。

编辑:

Android / Launcher必须缓存RemoteViews,如果您使用完全相同的updateAppWidget()来调用RemoteViews - 不会发生重新绑定,尽管文档说的是,我可以清楚地看到我的{{ 1}}未被调用。 因为我需要强制UI重新绑定,最后用一些虚拟布局调用RemoteViewsFactory,然后立即再次使用正常布局:

updateAppWidget()