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

前端之家收集整理的这篇文章主要介绍了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相关文章