我正在编写一个带有配置 Activity 的小部件,当它的 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
保存在 Activity 的 onCreate()
期间挖掘的小部件 ID。
当我在主屏幕上放置一个小部件实例时,我已经验证我得到了预期的事件序列:
onReceive()
获取一个ACTION_APPWIDGET_ENABLED
如果它是第一个。onUpdate()
被调用(在其中我检测到小部件未配置并绘制一些东西作为默认操作)。- 出现配置 Activity 。
- 当我按下
OK
时,上面的ok()
方法被调用。
该方法一直执行到 finish()
并且配置 Activity 消失了,但是没有调用 onUpdate()
或 onReceive( )
在此之后。 (小部件本身没有 updatePeriodMillis
。)我最终在屏幕上看到一个小部件,它具有我的默认操作的结果,但永远不会更新。
如果我在没有配置 Activity 的情况下设置小部件,它会在创建时更新并且一切都按预期工作(只是没有配置位)。
我在强制更新的过程中是否遗漏了什么?
谢谢!
最佳答案
事实证明这是可行的:
new MyWidgetProviderClass()
.onUpdate(this,
AppWidgetManager.getInstance(this),
new int[] { widget_id }
);
关于android - 如何强制更新配置 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3818545/