Man*_*oba 3 android android-appwidget
我的问题很严重Android application:
调用
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
appWidgetManager.updateAppWidget(appWidgetId, getWidgetView(context, appWidgetId));
Run Code Online (Sandbox Code Playgroud)
在该public void onReceive(Context context, Intent intent)方法中根本没有结果.该RemoteViews所产生看起来是有效的(编程而言),但widget不更新(它保留旧值).
我发现了一些类似的问题,但没有人回答:
解决了:
解决方案很奇怪,但使用
appWidgetManager.updateAppWidget(new ComponentName(context, CustomWidgetProvider.class), getWidgetView(context, appWidgetId));
Run Code Online (Sandbox Code Playgroud)
解决了我的问题.
@Manitoba发布的解决方案无法完全正常工作,这是放入其中的工作代码onUpdate:
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
// do your stuff
appWidgetManager.updateAppWidget(new ComponentName(context, CustomWidgetProvider.class), views);
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助:)
尝试了所有updateAppWidget()重载,但它就是不起作用 - 无论是从onReceive()还是调用Activity。奇怪的是,notifyAppWidgetViewDataChanged()在相同的场景下确实有效。
编辑:
Android/Launcher 必须是缓存RemoteViews,如果你updateAppWidget()用完全相同的方式调用RemoteViews- 不会发生重新绑定,尽管文档说,我可以清楚地看到 myRemoteViewsFactory没有被调用。因为我需要强制 UI 重新绑定,最终updateAppWidget()使用一些虚拟布局进行调用,然后立即再次使用正常布局进行调用:
try {
mgr.updateAppWidget(widgetId, new RemoteViews(context.getPackageName(), R.layout.dummy));
} finally {
mgr.updateAppWidget(widgetId, GetRemoteView(context, widgetId));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2878 次 |
| 最近记录: |