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); 
     } 
     }); 
+1

发布您的代码片段 – Anil

+0

你的意思是“每个活动”? NavDrawer应该切换*一个Activity的片段* –

+0

我必须在每个活动中放置点击监听器才能使菜单正常工作。 @ cricket_007 –

使用此方法,它可以帮助你

不要忘了添加此

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

谢谢你的回答,但我想知道是否有任何有效的方法来处理点击监听。我的应用程序使用大约40-50 MB的内存,我想减少它。那么将使用开关箱帮助? –

+0

@Ganesh开关柜不保存内存。有一个'View.OnClickListener'是...但是,这不会节省MB值 –

+0

我同意@ cricket_007 – 2017-07-29 07:11:57