我只是想在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;
非常感谢您的帮助。
答案 0 :(得分:0)
关于Commonsware的回答,我可能做错了,但我需要在onAppWidgetOptionsChanged方法中手动调用onUpdate。
updateAppWidget绝对没有效果(我仔细检查了widget ID和remoteview)
我很高兴听到更好的解决方案,但这是我可以刷新小部件的唯一方法!
int[] ids = {appWidgetId};
onUpdate(context, AppWidgetManager.getInstance(context), ids);