繁体   English   中英

为什么ListView.setAdapter(null)不引发空指针异常?

[英]Why doesn't ListView.setAdapter(null) throw a null pointer exception?

我偶然发现了这个独特的发现。 我的代码坏了,因为实现了LoaderManager之后,当我之前没有异常时,在我的适配器上收到了NullPointerException异常。

因此,我使用了调试器并逐步执行了onCreate方法:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    mDrawerListView = (ListView) inflater.inflate(
            R.layout.fragment_navigation_drawer, container, false);

    // Irrelevant code removed

    mDrawerListView.setAdapter(mAccountAdapter);
    return mDrawerListView;
}

不相关的代码仅包括添加页脚视图和设置onClickListeners,但在此方法(或任何其他方法)中没有一次,我是否mAccountAdapter分配某些mAccountAdapter 我知道我应该做,而且我要去,但是我犯了忘记这样做的错误。

当我使用调试器并在setAdapter(mAccountAdapter)行上设置断点时,我可以看到mAccountAdapter为空。 但是,我可以跨过它继续前进,而不会遇到空指针异常。 为什么允许将空值传递给该函数?

为什么允许将空值传递给该函数?

你为什么不呢? 毕竟,第一次创建ListView时,它会以一个null适配器开头。 如果您查看ListView及其祖先的源代码 ,则它们会大量检查mAdapter (将保存当前Adapter的数据成员)是否为null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM