我正在编写一个带有配置活动的小部件,当其
OK
单击按钮:
private void ok()
{
// ...Do Widget Configuration...
// Force an update
Context context = getApplicationContext();
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
AppWidgetManager.getInstance(context).updateAppWidget(widget_id, views);
// Return the expected result
Intent result = new Intent();
result.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widget_id);
setResult(RESULT_OK, result);
finish();
}
这几乎是一字不差的
the documentation
.
widget_id
onCreate()
.
当我在主屏幕上放置小部件的实例时,我已经验证了我得到了预期的事件序列:
-
onReceive()
得到一个
ACTION_APPWIDGET_ENABLED
如果是第一个。
-
onUpdate()
被调用(在其中,我检测到小部件未配置,并将某些内容作为默认操作绘制)。
-
出现配置活动。
-
当我按下
好的
ok()
调用上面的方法。
这个方法一直到
finish()
配置活动消失了,但是没有调用
更新()
或
onReceive()
在这一点之后。(小部件本身没有
updatePeriodMillis
)我最终在屏幕上看到一个小部件,它有我默认操作的结果,但从未更新。
如果我在没有配置活动的情况下设置小部件,它在创建时会得到更新,并且一切都按预期工作(只是没有配置的位)。
我在强制更新的过程中是否遗漏了什么?
谢谢!