是否建议在每次findViewById调用时检查null的视图?

时间:2014-05-09 16:06:26

标签: java android layout-inflater

使用findViewById对元素进行充气时,Android Studio始终警告我,我的虚增视图可能会返回null

View v = inflater.inflate(R.layout.fragment_photo_gallery, container, false);

并建议我使用null检查执行类似环绕声的操作:

if (v != null) {
    mGridView = (GridView)v.findViewById(R.id.gridView);
}

是否建议在膨胀元素之前始终执行上述的空检查?

编辑:添加lint图片

enter image description here enter image description here

2 个答案:

答案 0 :(得分:3)

我认为你永远不应该这样做。

如果这样做,则表示您正在屏蔽程序中的逻辑错误,以防您将错误的ID传递给findView。

如果你传递的是正确的id,但由于任何原因,inflater会返回null那个Android问题(实际上永远不会发生),你也应该什么都不做。

我认为此警告不是来自Android Lint。

答案 1 :(得分:0)

如果您确定要传递的ID确实存在于应用程序上下文中,则可以忽略此警告并继续执行代码,如果您不确定在访问此元素之前进行空检查是否更好查看因为

     View v = inflater.inflate(R.layout.fragment_photo_gallery, container, false);
如果“R.layout.fragment_photo_gallery”不正确或无效渲染v为null,

将返回null。

因此这样的尝试

     mGridView = (GridView)v.findViewById(R.id.gridView);

可能导致空指针异常