java - android 恢复在 backstack 中的 fragment 的实例状态

标签 java android listview android-fragments android-listview

您好,我有一个包含两个 fragment 的 Activity 。

  1. fragment A
  2. fragment B

    • fragment A 有一个 EditText 和一个 ListView。
    • 一旦我在 EditText 中输入内容并按下 Enter,我就会填充 ListView。
    • 现在 Fragment A 的 ListView 中填充了数据。
    • 单击 fragment A 的 ListView 上的任何项目都会将用户转到 fragment B
    • 此时我正在用 fragment B 替换 fragment A
    • 因此,当用户点击后退按钮时,他会回到 fragment A

现在的问题是,如果用户在 fragment B 中并且不止一次发生屏幕旋转等配置更改,那么我的 ListView 为空,因为我的数组列表为空。

请注意,我在 fragment A 和 fragment B 中使用了 onSavedInstanceState。 如果我当前的 fragment 是 fragment A 并且发生了配置更改,那么就没有恢复状态的问题,因为在 onCreateView 中我从 bundle 中获取数组列表。

我知道当我从 fragment B 返回到 fragment A 时我的数组列表为 null 的原因, fragment A 之前在后台堆栈中。当 fragment A 在后台堆栈中时,唯一被调用的方法是 onSaveInstanceState 所以在第一个配置更改我的数组列表之后字段为空,因为我无法将存储在 savedInstateState 包中的数组列表分配给数组列表字段。

我不想在 list 中使用 android:configchanges 属性。

我的问题是如何恢复位于后台堆栈中的 fragment 的状态。

最佳答案

我通过将该 fragment 的所有详细信息传递给主要 Activity ,然后将其添加到后台堆栈并将状态保存在主要 Activity 的 savedInstance 状态中以及每当后台更改和前一个 fragment 时,实现了保留后台 fragment 状态的目标是可见的我正在将该 fragment 的已保存实例状态从主要 Activity 传递给它,这样我就保留了状态。我不确定这是否是正确的方法。

关于java - android 恢复在 backstack 中的 fragment 的实例状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30658669/

相关文章:

android - 在 Android 中悬停一个字符串

listview - yii2中如何使用显示两个表的数据

java - 设置监听器的更好方法是什么?

java - pom.xml 中的依赖项在 flink kafka 连接器示例中不起作用

android - 错误:<内存>在具有JNI的Android上没有此类文件或目录

java - 在 Android 中使用 OpenCV 加载图像

Flutter 键盘显示并立即消失在 ListView 中的文本字段中

java - OpenShift 3 Java MongoDB

java - Spring Security - antMatcher 的 POST 方法(不是 antMatchers)

android - Eclipse DDMS 错误 "Can' t 绑定(bind)到本地 8600 以进行调试”