如果在覆盖时没有调用base.OnCreateView(.....)怎么办?

时间:2015-03-03 23:30:00

标签: c# android xamarin.android

这是从片段继承的代码。

我在没有base.OnCreateView (inflater, container, savedInstanceState);的情况下尝试过它并且效果很好。有必要打电话吗?

看起来它调用了抽象类,并且据说注册了View但是我们必须这样做吗?

重写OnCreateView,这里是

public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        base.OnCreateView (inflater, container, savedInstanceState);

        View oView = inflater.Inflate (Resource.Layout.EntityDetailsDialogFragment, container, false);

        return oView;
    }

1 个答案:

答案 0 :(得分:3)

Android是开源的,因此您可以自行检查。这是Fragment.onCreateView()

的来源
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup , @Nullable Bundle savedInstanceState) {
    return null;
}

呼叫super.onCreateView()不会做任何事情,因为没有实施。此外,此方法返回的值与其他生命周期方法(如onCreate())不同,因此要执行有意义的操作,您必须执行View blah = super.onCreateView(),因为否则会丢弃返回值。