setOnClickListener在自定义导航器抽屉中的最佳做法
我在我的应用程序中使用自定义导航器抽屉。对于切换活动,我为每个按钮使用setOnClickListener。但是我认为这会消耗大量的内存,因为每次都要在每个活动中加载相同的代码。那么是否有任何有效的方法来处理菜单中的点击监听器,如开关盒?setOnClickListener在自定义导航器抽屉中的最佳做法
我的导航项点击代码。
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);
}
});
使用此方法,它可以帮助你
不要忘了添加此
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
}
}
谢谢你的回答,但我想知道是否有任何有效的方法来处理点击监听。我的应用程序使用大约40-50 MB的内存,我想减少它。那么将使用开关箱帮助? –
@Ganesh开关柜不保存内存。有一个'View.OnClickListener'是...但是,这不会节省MB值 –
我同意@ cricket_007 – 2017-07-29 07:11:57
发布您的代码片段 – Anil
你的意思是“每个活动”? NavDrawer应该切换*一个Activity的片段* –
我必须在每个活动中放置点击监听器才能使菜单正常工作。 @ cricket_007 –