5

Continuo a ricevere questo avviso nel mio codice e sto iniziando a preoccuparmi poiché sono vicino alla mia scadenza di completamento. Ho un DrawerLayout nella mia attività principale, utilizzando l'attività del navigatore di navigazione di Android Studio, ma ho dovuto apportare una leggera modifica al codice in quanto il DrawerLayout setDrawerListener è ora deprecato.Il layout del cassetto Android può produrre un'eccezione di puntatore nullo

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

sto ricevendo l'avvertimento sul drawer.addDrawerListener(toggle) e navigationView.setNavigationItemSelectedListener(this)

Più in basso nel mio codice, sto anche ricevendo in questo metodo:

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

Grazie in anticipo per tutti coloro che possono avere un'idea su cosa lo sta causando. Ho cercato questo problema ma non sono riuscito a trovare un esempio nel metodo post deprecato.

risposta

0

Assicurarsi di aver utilizzato ActionBarDrawerToggle in support-v7-appcompat.

Sostituire il codice drawerLayout.setDrawerListener(actionBarDrawerToggle);

da drawerLayout.addDrawerListener(actionBarDrawerToggle);

Infine, controllare il cassetto nullo e navigationview nullo simili:

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