Cómo crear una clase para mostrar tostadas mensaje una vez al botón de imagen hace clic?

Hombre pollo :

Tengo más de un botón de imagen en mi aplicación y quiero que se muestre un mensaje de aviso emergente cuando se hace clic en cada botón. Sin embargo, en mi código no me gusta la idea de que tenga conjunto de mensajes tostadas continua para cada botón de imagen una y otra vez. ¿Hay una manera de acortar estos mensajes como en una clase de ser así, cómo puedo hacerlo? Nota: El único que no quiero que aparezca en el mensaje de aviso emergente es el botón de servicio de habitaciones.

Mi código:

public class MainMenu extends AppCompatActivity {

private ImageButton roomservice, transportation, foodservice, maintenance, checkout, baggagecollection;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_menu);
    getSupportActionBar().setTitle("MainMenu");

    roomservice = (ImageButton) findViewById(R.id.roomservice);
    transportation = (ImageButton) findViewById(R.id.transportation);
    foodservice = (ImageButton) findViewById(R.id.foodservice);
    maintenance = (ImageButton) findViewById(R.id.maintenance);
    checkout = (ImageButton) findViewById(R.id.checkout);
    baggagecollection = (ImageButton) findViewById(R.id.baggagecollection);

    roomservice.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openRoomServiceMenu(); // creates main menu method name
        }
    });

    transportation.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainMenu.this, "This action is unavailable", Toast.LENGTH_LONG).show();
        }
    });

    foodservice.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainMenu.this, "This action is unavailable", Toast.LENGTH_LONG).show();
        }
    });

    maintenance.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainMenu.this, "This action is unavailable", Toast.LENGTH_LONG).show();
        }
    });

    checkout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainMenu.this, "This action is unavailable", Toast.LENGTH_LONG).show();
        }
    });

    baggagecollection.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainMenu.this, "This action is unavailable", Toast.LENGTH_LONG).show();
        }
    });

}
Abhinav Chauhan:

Esta es una buena práctica para no repetir usted mismo

por lo que puede pasar un objeto de una clase escucha personalizado

private class MyListener implements View.OnClickListener // make an inner class
{ 
  String msg;
  MyListener(String msg){this.msg = msg;} // if you want separate msg for each image , otherwise omit the constructor 
  @Override
  public void onClick(View view){
  Toast.makeText(MainActivity.this,msg,Toast.LENGTH_LONG).show(); 
  }
}

Ahora se establece en botón

maintainance.setOnClickListener(new MyListener("your msg"));

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=349722&siteId=1
Recomendado
Clasificación