android - 如何强制更新配置 Activity ?

标签 android android-widget

我正在编写一个带有配置 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/

相关文章:

android - 如何从 Api 级别 30 中的 imageUri 获取位图?

java - jni 回调中的黑色 Sprite

android - 具有大量 View 或动态 View 的 Viewpager

android - 将 PendingIntent 中的小部件的额外内容传递给 Activity

java - 交替的 Android ListView 颜色不起作用

android - 相对于 drawableLeft 图像垂直居中 TextView 的文本

android - 多种 Gradle 产品

android - 是否可以指定 TableRow 高度?

php - 在数字前使用 {%2B) 而不是 (+) 有什么区别?

java - 如何在我的应用程序中附加我使用相机拍摄的照片?