5

Ich empfange diese Warnung in meinem Code und ich fange an, sich Sorgen zu machen, wie ich in der Nähe meiner Fertigstellungstermin bin. Ich habe ein DrawerLayout in meiner Hauptaktivität und nutze die eigenen Navigationsschubladen-Aktivitäten von Android Studio, musste aber eine leichte Änderung am Code vornehmen, da der DrawerLayout setDrawerListener nun veraltet ist.Android-Schublade-Layout kann Null-Zeiger-Ausnahme

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); 

ich die Warnung auf drawer.addDrawerListener(toggle) und navigationView.setNavigationItemSelectedListener(this)

Weiter unten in meinem Code erhalte, bin ich es auch in diesem Verfahren empfangen:

@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(); 
    } 
} 

Vielen Dank im Voraus für jeden, der kann eine Idee, was das verursacht. Ich habe dieses Problem durchsucht, konnte jedoch kein Beispiel für die Post-Deprecated-Methode finden.

Antwort

0

Stellen Sie sicher, dass Sie ActionBarDrawerToggle in support-v7-appcompat verwendet haben.

Ersetzen Sie den Code drawerLayout.setDrawerListener(actionBarDrawerToggle);

von drawerLayout.addDrawerListener(actionBarDrawerToggle);

Schließlich überprüfen für die Null Schublade und null navigationview wie folgt aus:

 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);