我正在使用 ActionBarSherlock 以及MenuItem
我动态管理的几个 s,具体取决于程序状态。具体来说,我将s 保存到'方法MenuItem
中的实例变量中,然后可以根据需要在.Activity
onCreateOptionsMenu()
Activity
但是,我发现MenuItem
变量可能会在配置更改时丢失,例如设备旋转。因此,如果需要,我还将它们放入 aParcel
并通过下一次调用中的机制将它们传递给onSaveInstanceState()
进行恢复。savedInstanceState
onCreate()
在设备旋转的情况下,这似乎工作正常。但是,如果我按下主页按钮,我会收到错误消息:
Unable to marshal value com.actionbarsherlock.internal.view.menu.MenuItemWrapper
知道有什么区别,或者建议如何解决?谢谢!
更新
我找到了一个简单的解决方案,使用onRetainCustomNonConfigurationInstance()
. 通过覆盖此方法,您可以在销毁 an 时存储您选择的类的对象Activity
,然后使用getLastCustomNonConfigurationInstance()
. 这似乎比弄乱Parcelable
s 等要简单得多,而且它适用于我的情况。
但我仍然想知道:为什么我会使用 得到上述错误onSaveInstanceState()
?使用起来一般安全onRetainCustomNonConfigurationInstance()
吗,还是有什么陷阱?