我的主屏幕上有一个小部件,其中有几个具有默认背景图像的 ImageButton。通过配置 Activity ,我可以更改任何 ImageButton 上的图像。问题是当屏幕旋转时,ImageButton 上的图像消失并变回默认图像。

我不知道为什么会发生这种情况或如何解决它

最佳答案

当屏幕旋转时,整个 appwidget 将使用您传递给 RemoteViews .updateAppWidget() 的最后一个 AppWidgetManager 对象重建。因此,每次调用 updateAppWidget() 时,传递一个 RemoteViews 对象非常重要,该对象上设置了小部件完全重建所需的所有内容,而不仅仅是要在小部件上更新的一两件事展示。

因此,在您的 AppWidgetProvider 类中,无论何时更新您的 appwidget,您都需要创建一个 RemoteViews 对象,使用该对象为您的 appwidget 构建所有 View 设置,然后在完成后调用 AppWidgetManager.updateAppWidget()。

我的猜测是你正在做这样的事情:

  • 获取远程 View 对象
  • 设置新的按钮图片
  • 调用 updateAppWidget()
  • 获取远程 View 对象
  • 在按钮上设置一个挂起的 Intent
  • 调用 updateAppWidget()

  • 当你需要做这样的事情时:
  • 获取远程 View 对象
  • 设置新的按钮图片
  • 在按钮上设置一个挂起的 Intent
  • 调用 updateAppWidget()
  • 10-06 10:55