什么时候应该在实现之前检查一个视图!= null?

时间:2017-04-01 05:03:01

标签: java android android-view

我正在寻找Cheesesquare来学习一些新的设计工具,我遇到了一些让我感到疑惑的代码。代码找到一个视图,然后在继续设置之前检查它是否为null。

为什么视图会返回null,假设它存在并且id匹配?

我相信编写此代码的人的专业知识,我认为这不是一个错误,但它的目的是什么?我应该何时检查空值以及何时不需要?

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    if (navigationView != null) {
        setupDrawerContent(navigationView);
    }

    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
    if (viewPager != null) {
        setupViewPager(viewPager);
    }

...

private void setupViewPager(ViewPager viewPager) {
    Adapter adapter = new Adapter(getSupportFragmentManager());
    adapter.addFragment(new CheeseListFragment(), "Category 1");
    adapter.addFragment(new CheeseListFragment(), "Category 2");
    adapter.addFragment(new CheeseListFragment(), "Category 3");
    viewPager.setAdapter(adapter);
}

private void setupDrawerContent(NavigationView navigationView) {
    navigationView.setNavigationItemSelectedListener(
            new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(MenuItem menuItem) {
            menuItem.setChecked(true);

3 个答案:

答案 0 :(得分:0)

如果由于某种原因,findViewById(R.id.nav_view)返回null,则视图将返回null。例如,如果缺少nav_view,则可能会发生这种情况。由于该函数可以返回null,因此检查空值以避免NullPointerException

答案 1 :(得分:0)

使用下面提到的代码的主要目的是确保viewPager在设置之前永远不会返回null值,这将导致应用程序崩溃。使用此代码的人试图安全地使用代码,并确保应用程序将按预期工作,并且在任何情况下都不会因viewPager返回null值而崩溃。

if (viewPager != null) {
   setupViewPager(viewPager);
}

答案 2 :(得分:0)

除了其他答案,我只想说明一点。因为我们不知道这个代码库的全部内容,所以我假设这个用户正在编写他/她的代码模块化。有时我们可能想要动态添加视图,绑定的时间使我们保持谨慎。在这些情况下,我们希望确保我们尝试加载的视图不为空。