2017-07-29 3 views
2

J'utilise un tiroir de navigation personnalisé dans mon application. Pour les activités de commutation, j'utilise setOnClickListener pour chaque bouton. Mais je pense que cela pourrait consommer beaucoup de mémoire car le même code doit être chargé dans chaque activité à chaque fois. Donc, y a-t-il un moyen efficace de gérer sur l'écouteur de clic pour le menu comme cas de commutateur?Les meilleures pratiques pour setOnClickListener dans le tiroir de navigation personnalisé

Mon code pour les clics nav-point.

Button oneButton = (Button) findViewById(R.id.nav_one); 
    Button twoButton = (Button) findViewById(R.id.nav_two); 
    Button threeButton = (Button) findViewById(R.id.nav_three); 
    Button fourButton = (Button) findViewById(R.id.nav_four); 
    Button fiveeButton = (Button) findViewById(R.id.nav_five); 

     oneButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View view) { 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 

     Intent firstIntent = new Intent(getApplicationContext(), MainActivity.class); 
     startActivity(firstIntent); 
     } 
     }); 

     twoButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View view) { 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 

     Intent secondIntent = new Intent(getApplicationContext(), SecondActivity.class); 
     startActivity(secondIntent); 

     } 
     }); 

     threeButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View view) { 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 

     Intent threeButton = new Intent(getApplicationContext(), ThirdActivity.class); 
     startActivity(thirdIntent); 

     } 
     }); 

     threeButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View view) { 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 

     Intent fourButton = new Intent(getApplicationContext(), FouthActivity.class); 
     startActivity(fourthIntent); 

     } 
     }); 

     fourButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View view) { 


     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 

     Intent fiveButton = new Intent(getApplicationContext(), FifthouthActivity.class); 
     startActivity(fifthIntent); 
     } 
     }); 
+1

poster votre extrait de code – Anil

+0

Que voulez-vous dire « chaque activité »? Le NavDrawer devrait changer les Fragments de * une activité * –

+0

Je dois mettre les écouteurs de clic dans chaque activité pour faire le travail de menu. @ cricket_007 –

Répondre

0

Utilisez cette méthode, il peut vous aider

Ne pas oublier d'ajouter cette

class YourClass ... implements View.OnClickListener 

    onCreate { 
     Button oneButton = (Button) findViewById(R.id.nav_one); 
     Button twoButton = (Button) findViewById(R.id.nav_two); 
     Button threeButton = (Button) findViewById(R.id.nav_three); 
     Button fourButton = (Button) findViewById(R.id.nav_four); 
     Button fiveeButton = (Button) findViewById(R.id.nav_five); 

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

     oneButton.setOnClickListener(this); 
     twoButton .setOnClickListener(this); 
     threeButton .setOnClickListener(this); 
     fourButton .setOnClickListener(this); 
     fiveeButton .setOnClickListener(this); 
    }//onCreate method ends here 

    @Override 
    public void onClick(View view) { 

     switch (view.getId()) 
     { 

      case R.id.nav_one: 
       drawer.closeDrawer(GravityCompat.START); 

       Intent firstIntent = new Intent(getApplicationContext(), MainActivity.class); 
       startActivity(firstIntent); 
       break; 
      case R.id.nav_two: 
       //same way other buttons also 

     } 
    } 
+0

Merci pour cette réponse, mais je veux savoir s'il existe un moyen efficace de gérer les clics d'écoute. Mon application utilise environ 40-50 Mo de mémoire et je veux réduire cela. Alors, en utilisant l'aide de cas de commutation? –

+0

Le boîtier @Ganesh ne sauvegarde pas la mémoire. Avoir un 'View.OnClickListener' est ... Toutefois, cela ne sauvera pas la taille d'une valeur MB –

+0

Je suis d'accord avec @ cricket_007 –