我正在查看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);
例如:如果在此佈局中缺少id爲nav_view的視圖,則findViewById(R.id.nav_view)方法返回null。 –
你不得不問克里斯爲什麼他對這些'View'進行了無效檢查,而不是所有其他的檢查。你可能會注意到課堂上還有TODO評論,所以它可能不是一個完整的,精美的項目。也許他打算實現不同的肖像和風景佈局。也許這只是一個調試助手。也許完全是另一回事。我們無法確定。 –