2

默认 Android Studio 生成代码:

public static Test newInstance(String param1, String param2) {
    Test fragment = new Test();
    Bundle args = new Bundle();
    args.putString(ARG_PARAM1, param1);
    args.putString(ARG_PARAM2, param2);
    fragment.setArguments(args);
    return fragment;
}
public Test() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);
    }
}

空检查真的有用吗?换句话说,参数包在任何情况下都会被销毁吗?

编辑:顺便说一句,我也无法理解:

@Override
public void onDetach() {
    super.onDetach();
    mHandler = null;
}

片段的实例已经(或将要)消失了,那么将 mHandler 设置为 null 是什么意思呢?

4

1 回答 1

1

如果在 ViewPager 中使用此片段并且您正在使用 Fragment"State"PagerAdapter,则应该需要它。

因为 FragmentStatePagerAdapter 在需要时使用默认构造函数来创建片段。在这种情况下,您缺少论点。

此外,如果该片段为释放内存而销毁并在需要时恢复,它将再次使用默认构造函数创建。这里也有同样的故事。

祝你好运。

于 2014-05-27T05:16:08.617 回答