gpt4 book ai didi

android - Fragment newInstance 为什么要使用参数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:24:46 24 4
gpt4 key购买 nike

这两种方法之间的真正区别是什么?

1.我使用的是标准的老式 bundle :

    public static final Fragment newInstance(int val1, int val2) {
TestFragment f = new TestFragment();
Bundle bundle = new Bundle();
bundle.putInt("val1", val1);
bundle.putInt("val2", val2);
f.setArguments(bundle);
return f;
}

2.我设置为实例成员

    public static final Fragment newInstance(int val1, int val2) {
TestFragment f = new TestFragment();
f.val1 = val1;
f.val2 = val2;
return f;
}

最佳答案

在第一个示例中,您实际上并未设置 fragment 实例变量 val1 和 val2,因此它们保持未初始化状态。因此,您需要在 onCreate 中读回包以设置实例变量。

当 fragment 实例被销毁并重新创建时(例如由于设备旋转),onCreate(或 DialogFragments 的 onCreateDialog)可以使用以下方式重新加载参数:

public void onCreate(Bundle savedInstanceState)
{
if (savedInstanceState != null)
{
Bundle args = getArguments();
val1 = args.getInt("val1");
val2 = args.getInt("val2");
}
}

然后你的状态就可以恢复了。

关于android - Fragment newInstance 为什么要使用参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36717256/

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