gpt4 book ai didi

android - 如何在 fragment 中保存状态

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:41:26 25 4
gpt4 key购买 nike

我有 4 个按钮来替换 Activity 中的 fragment [ fragment A、 fragment B、 fragment C、 fragment D],然后我将 fragment A 替换为 Activity ,然后我更改 fragment A 中的值,然后我将 fragment B 替换为 fragment A 和将 fragment C 替换为 fragment B 。但我想将 fragment A 替换为 fragment C 。如何在 fragment A 中保存状态。

提交 fragment 时的代码

  private void beginFragmentTransaction(BaseFragment fragment) {
String tag = fragment.getClass().getName();
currentFragmentTag = tag;

boolean fragmentPopped = getChildFragmentManager().popBackStackImmediate(tag, 0);

if (!fragmentPopped) {
getChildFragmentManager().beginTransaction()
.replace(R.id.container, fragment, tag)
.addToBackStack(tag)
.commit();
}

}

替换图

fragment A -------> fragment B

fragment B -------> fragment C

fragment C -------> fragment A

附言。我不想使用后退按钮返回到 fragment A ,我想在第一次提交时替换 fragment A 并恢复数据。

最佳答案

您可以选择实现 onRestoreInstanceState(),而不是在 onCreate() 期间恢复状态,系统会在 onStart() 之后调用它> 方法。系统只有在有保存状态需要恢复时才会调用onRestoreInstanceState(),所以不需要检查Bundle是否为null。

仅供引用:这是示例代码。仅供引用。

public class MainFragment extends Fragment {
private String title;
private double rating;
private int year;

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);

savedInstanceState.putString(TITLE, "Gladiator");
savedInstanceState.putDouble(RATING, 8.5);
savedInstanceState.putInt(YEAR, 2000);
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

title = savedInstanceState.getString(TITLE);
rating = savedInstanceState.getDouble(RATING);
year = savedInstanceState.getInt(YEAR);
}
}

仅供引用:这真的是一个很好的话题,也请检查Once for all, how to correctly save instance state of Fragments in back stack?

关于android - 如何在 fragment 中保存状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44480363/

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