我有一个“哑”的自定义Android小部件(如
View
,而不是主屏幕小部件)我需要在屏幕旋转期间保留一些状态。这个
PlayerWidget
基本上是一个带有一些按钮(后退、前进、播放/暂停)和进度条的媒体播放器用户界面。它通过getter公开用户界面的重要部分。
有几个单独的
Activities
,每个都有一个专门的控制器对象-这些对象使用getter更新按钮是应该启用,还是有一个“播放”或“暂停”图标,并在收到来自后台的回调时更新进度条。
Service
.
例如,在一个控制器的“开始播放”方法中,它执行以下操作:
mWidget.getMiddleButton().setImageResource(R.drawable.btn_pause);
有一个
Activity
屏幕旋转通过
onConfigurationChanged
-这个电话
setContentView()
(因为布局在纵向和横向上有所不同),并将
新创建的
播放器小部件
到
仍然存在
控制器对象。
这很好:在新的小部件实例上开始进行进度更新,按钮按预期工作。
但是,按钮没有正确的图标,因为
播放小部件
-不知道它的控制器-不知道它是如何使用的,因此它应该显示什么。
我想知道最好的办法是写
getState
和
restoreState
方法
活动
可以在新的
设置内容视图()
但是我没有办法
Drawable
从
ImageButtons
-还是有?
或者我考虑包装
ImageButton
对象
播放小部件
getter返回,以便我可以保存
可拉伸的
控制器设置的资源ID。
或者,当我绑定新的
播放小部件
对于控制器,控制器可以有某种“基于当前控制器状态设置小部件用户界面状态”的方法?由于各种原因,这可能很复杂,但感觉这是一种“正确”的做法。
任何有关这个稍微杂乱无章的问题的意见都将受到赞赏!:)