gpt4 book ai didi

java - 如何确保 fragment 是在 Activity 中通过静态方法 new Instance 创建的

转载 作者:搜寻专家 更新时间:2023-11-01 09:19:03 26 4
gpt4 key购买 nike

我正在设计一个供其他开发人员使用的 fragment 。 fragment 必须具有 Android SDK 在创建 fragment 时使用的公共(public)构造函数,但是要将数据从 Activity 传递到 fragment ,最好创建一个静态方法来像这样在 fragment 类中创建 fragment

  public static FaceMatchingResultFragment newInstance(boolean matched, String param2) {
FaceMatchingResultFragment fragment = new FaceMatchingResultFragment();
Bundle args = new Bundle();
args.putBoolean(ARG_PARAM1, matched);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}

我的问题是有没有办法确保开发人员必须使用此方法而不是公共(public)构造函数?

最佳答案

onCreate 期间检查参数包是否包含在内是最干净的方法,不会乱用反射。如果你想在访问无参数构造函数时显示内联错误,你可以使用 RestrictTo 注释:

public class SimpleArgFragment extends Fragment {
public static SimpleArgFragment newInstance(boolean val) {
Bundle args = new Bundle();
args.putBoolean("param", val);
SimpleArgFragment f = new SimpleArgFragment();
f.setArguments(args);
return f;
}

@androidx.annotation.RestrictTo({RestrictTo.Scope.SUBCLASSES})
public SimpleArgFragment() {
}

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

if (getArguments() == null)
throw new IllegalArgumentException("Missing arguments - use newInstance() to create.");
}
}

关于java - 如何确保 fragment 是在 Activity 中通过静态方法 new Instance 创建的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288308/

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