Android 如何在配置活动中强制更新?
我正在编写一个带有配置活动的小部件,当单击其Android 如何在配置活动中强制更新?,android,android-widget,Android,Android Widget,我正在编写一个带有配置活动的小部件,当单击其OK按钮时,该小部件将调用以下方法: private void ok() { // ...Do Widget Configuration... // Force an update Context context = getApplicationContext(); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget
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();
}
这几乎是一字不差的widget_id
保存在活动的onCreate()
过程中挖掘的widget id
当我将小部件的实例放在主屏幕上时,我已验证是否获得了预期的事件序列:
获取启用的onReceive()
操作
- 调用
(在其中,我检测到小部件未配置,并将某些内容作为默认操作绘制)onUpdate()
- 此时将显示配置活动
- 当我按下
时,就会调用上面的OK
方法OK()
finish()
,配置活动消失,但在这一点之后没有调用onUpdate()
或onReceive()
。(小部件本身没有updatePeriodMillis
)我在屏幕上看到一个小部件,它有我默认操作的结果,但从未更新过
如果我在没有配置活动的情况下设置小部件,它会在创建时得到更新,并且一切都按预期工作(只是没有配置的位)
我在强制更新的过程中是否遗漏了什么
谢谢 结果证明这是可行的:
new MyWidgetProviderClass()
.onUpdate(this,
AppWidgetManager.getInstance(this),
new int[] { widget_id }
);
这是android中的一个已知错误:onUpdate应该只在您从配置活动返回后调用。我也有同样的问题。希望3.2能解决这个问题,虽然这很可怕,但我最终还是这么做了。我保留了对AppWidgetProvider的静态引用,在该引用上调用onUpdate()。很遗憾,这是目前唯一的办法。我也面临着这个问题。但是,我们如何将配置值传递给更新方法上的AppWidgetProvider呢?@256:您可以将信息保存在数据库中,也可以使用widgetId使用SharedReferences来保持信息的差异,这对我来说是有效的。花了大约一天的时间