android – 如何在配置活动中强制更新?

我正在编写一个带有配置活动的小部件,当单击其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逐字逐句.tidget_id保存在活动的onCreate()期间挖出的小部件ID.

当我在主屏幕上放置小部件的实例时,我已经验证我得到了预期的事件序列:

> onReceive()获取ACTION_APPWIDGET_ENABLED,如果它是第一个.
> onUpdate()被调用(我在其中检测到未配置窗口小部件并将某些内容绘制为默认操作).
>出现配置活动.
>当我按OK时,上面的ok()方法被调用.

该方法一直到finish()并且配置活动消失,但在此之后没有调用onUpdate()或onReceive(). (小部件本身没有updatePeriodMillis.)我最终在屏幕上显示了一个小部件,该小部件具有我的默认操作的结果但从未得到更新.

如果我在没有配置活动的情况下设置窗口小部件,它会在创建时更新,并且一切都按预期工作(只是没有配置的位).

我在强制更新的方式中遗漏了什么吗?

谢谢!

解决方法

结果证明有效:
new MyWidgetProviderClass()
  .onUpdate(this,AppWidgetManager.getInstance(this),new int[] { widget_id }
   );

以上是来客网为你收集整理的android – 如何在配置活动中强制更新?全部内容,希望文章能够帮你解决android – 如何在配置活动中强制更新?所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。