Search code examples
androidandroid-toolbar

Correct way to use Toolbar Listener


Hello I can't found an answer to my question. I am using a Toolbar, so I create it in OnCreate like this:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Toolbar");
toolbar.inflateMenu(R.menu.menu_examen);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem item) {
        return false;
    }
});

But I noticed that if I use a lot of options my OnCreate becomes very mesy. I love order so I made this listener out of OnCreate:

Toolbar.OnMenuItemClickListener toolbarListener = new Toolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()){
                case R.id.opcion1:
                    Toast.makeText(ExamenActivity.this,"Opcion 1",Toast.LENGTH_SHORT).show();
                    break;
                default:
            }
            return false;
        }
    };

And then on my OnCreate the toolbar is:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//setSupportActionBar(toolbar);
toolbar.setTitle("Quitar esta wea");
toolbar.inflateMenu(R.menu.menu_examen);
toolbar.setOnMenuItemClickListener(toolbarListener);

This is working but Is this correct? Does this have a name? Thank you. I know it is a simple question but I want to it right


Solution

  • Yea that is better, you can do it even better without extra variable as in

    class YourActivity extends Activity implements Toolbar.OnMenuItemClickListener{
    
    onCreate(){
          ...
          Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
         //setSupportActionBar(toolbar);
          toolbar.setTitle("Quitar esta wea");
          toolbar.inflateMenu(R.menu.menu_examen);
          toolbar.setOnMenuItemClickListener(this);
          ...
    }
    
    @Override
    public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()){
                    case R.id.opcion1:
                        Toast.makeText(ExamenActivity.this,"Opcion 1",Toast.LENGTH_SHORT).show();
                        break;
                    default:
                }
                return false;
            }
    }