android - 使用兼容性库时 setRetainInstance 不适用于 ListFragment

标签 android android-fragments android-compatibility

我试图在方向更改时保存一个 ListFragment 子类,因此我将 setRetainInstance(true) 添加到我的 onCreate 函数的末尾。我添加了一个 onSaveInstanceState 方法以将其所有数据添加到一个包中,然后将代码添加到 onActivityCreated 中以加载该数据。不幸的是,它行不通。

当我在 Log.d 的帮助下添加一些调试消息时,我发现不仅没有调用 onSaveInstanceState,而且调用了 onCreate(文档似乎说当 retainInstance 为真时不应该发生)。 onCreate 和 onActivityCreated 都没有 bundle 我的数据(不出所料)。

我猜这可能是兼容性库的问题,尽管我没有 android 3.0+ 设备来测试它。

感谢任何帮助,如有必要,我可以发布一些代码 fragment ,但我不会做任何复杂的事情。

更新:当我改变方向时,onDestroy 没有被调用(它应该是这样的),所以似乎 setRetainInstance 的一些正在工作

最佳答案

我终于明白我的问题是什么了。这一切都归结为我忘记添加的一行。在我的 FragmentActivity 子类中,我覆盖了 onSaveInstanceState,但我从未调用过 super.onSaveInstanceState。显然,与我忘记调用其父类的其他方法不同,当我忘记调用它的父类版本时,onSaveInstanceState 不会抛出运行时错误,而 setRetainInstance 只是停止工作。我希望这可以避免有人因为我试图解决这个问题而头疼。

关于android - 使用兼容性库时 setRetainInstance 不适用于 ListFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6906531/

相关文章:

android - 多个 Activity 的 startActivityForResult 用法

android - 为 fragment 设置主题

android - 如何将 MapsActivity 插入 fragment 容器?

android - 如何使用 Display.getSize 并支持 API 级别 10?

安卓兼容性 - micromax funbook

美国股市的 Java 日历时区

java - 使用 DownloadManager 类从 WebView 下载文件

java - HandlerThread 的线程 ID - android

android - 从 Activity 开始 fragment

android - 在 2.2 错误上运行 fragment - 找不到类