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