5

Я продолжаю получать это предупреждение в своем коде, и я начинаю беспокоиться, поскольку я близок к моему крайнему сроку завершения. У меня есть DrawerLayout в моем основном действии, используя собственную активность ящика Android Studio, но пришлось внести небольшое изменение в код, поскольку DrawerLayout setDrawerListener теперь устарел.Схема выдвижного ящика Android может вызвать исключение нулевого указателя

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //Firebase reference to main application URL and 'today's' matches 
    Firebase mainRef = new Firebase(cons.getFirebaseUrl()); 

    //DrawerLayout settings for the navigation drawer 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.addDrawerListener(toggle); 
    toggle.syncState(); 

    //Retrieve the navigation drawer and set it's listener for menu item presses 
    navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

Я получаю предупреждение о drawer.addDrawerListener(toggle) и navigationView.setNavigationItemSelectedListener(this)

Далее вниз в моем коде, я также получать его в этом методе:

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) // This line gets the warning { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     super.onBackPressed(); 
    } 
} 

Спасибо заранее для тех, кто может иметь идея о том, что вызывает его. Я пробовал эту проблему, но не смог найти пример метода устаревших сообщений.

ответ

0

Убедитесь, что вы использовали ActionBarDrawerToggle в support-v7-appcompat.

Замените код drawerLayout.setDrawerListener(actionBarDrawerToggle);

по drawerLayout.addDrawerListener(actionBarDrawerToggle);

Наконец, проверьте нулевой ящик и нуль navigationview как это:

 DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout); 

     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     assert drawer != null; 
     drawer.addDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     assert navigationView != null; 
     navigationView.setNavigationItemSelectedListener(this); 
Смежные вопросы