首页 > 解决方案 > 如何创建一个类以在单击图像按钮时显示一次吐司消息?

问题描述

我的应用程序上有多个图像按钮,我希望它在单击每个按钮时显示一条吐司消息。但是在我的代码中,我不喜欢一遍又一遍地为每个图像按钮设置连续的 toast 消息的想法。有没有办法像在课堂上一样缩短这些消息,如果可以的话,我该怎么做?注意:我不希望吐司消息出现的唯一一个是客房服务按钮。

我的代码:

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();
        }
    });

}

标签: javaandroid

解决方案


如果它只是在单击时显示 toast,我不建议创建全新的 ImageView 类。您可以做的是创建新类型的单击侦听器,它将实现 View.OnClickListener 并将字符串或字符串资源作为构造函数参数。之后覆盖 onClick 在您的新点击侦听器中并在那里显示吐司。最后将视图的点击监听器设置为新创建的类,并在要在 toast 中显示的构造函数中传递字符串。这样,如果您想与按钮或其他类型的视图具有相同的功能,您将不会被迫创建新类型的类。


推荐阅读