gpt4 book ai didi

android - 使用 savedInstance 保存和 fragment 的参数有什么区别?

转载 作者:行者123 更新时间:2023-11-29 23:29:37 25 4
gpt4 key购买 nike

在 Android Fragment 中它有 onSaveInstanceState() 允许保存一些数据以在 os 重新创建 fragment 时恢复状态。

onSaveInstanceState(outState: Bundle) {
outState.putString("dataStr", dataStr)
}

fragment 的参数中已经有数据怎么办?似乎在重新创建 fragment 后,先前的参数也被恢复。

// set the argument
Bundle bundle = new Bundle();
bundle.putString("dataStr", dataStr);
AFragment aFragment = new AFragment();
aFragment.setArguments(bundle);

//get the argument inside the AFragment
Bundle bundle=getArguments();

这是否意味着如果 fragment 的参数中有任何内容,则不需要通过 onSaveInstanceState() 保存它们?

问题:由于参数可以在 fragment 内更新,是否可以将数据保存在参数中而不是通过 onSaveInstanceState() 进行保存?

或者使用这两个有什么区别吗?

最佳答案

onSaveInstanceState()/onRestoreInstanceState() 仅在需要重新创建 Activity/Fragment 时(尤其是在配置更改时)才由 Android 显式调用,想象一下用户开始输入内容然后更改屏幕方向,如果您不处理保存状态,他将失去输入。

Fragment Args另一方面用于实例化 fragment ,即使重新创建 fragment ,args 仍可用它将是初始状态。

总结一下,如果您想创建一个带有一些args(比如用户名...)的新 fragment ,您需要使用 args。

但是如果您想保存当前状态(用户输入...)以防 fragment 重新创建,您需要通过 SaveInstance 方法来处理它。

为了进一步了解保存/恢复的工作原理,我推荐这个 article

关于android - 使用 savedInstance 保存和 fragment 的参数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52854651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com