I am using a custom nav drawer in my app. For switching activities, I am using setOnClickListener for each button. But i think that might consume a lot of memory as the same code is to be loaded in each activity every time. So is there any efficient way to handle on click listener for menu like switch case?
My code for nav-item clicks.
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);
}
});
Use this method , it may help you
Don't forget to add this
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
}
}