处理多个按钮点击监听器

4
我在布局中有两个ImageButton,分别是“加号”和“减号”。我给“加号”按钮附上了一个点击监听器,并在点击函数中添加了一个简单的Toast消息。它可以正常工作。
    ImageButton btplus = (ImageButton)findViewById(R.id.btplus);        
    btplus.setOnClickListener( new ImageButton.OnClickListener(){
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "+", Toast.LENGTH_SHORT);
        }
    });

然后我给减号ImageButton附加了第二个点击监听器...
    ImageButton btminus = (ImageButton)findViewById(R.id.btminus);
    btminus.setOnClickListener( new ImageButton.OnClickListener(){
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "-", Toast.LENGTH_SHORT);
        }
    });

...并且没有更多的按钮点击可以工作!“加号”点击也停止工作。

我看过很多关于这个主题的例子,但是我看不出它们(工作)和我的区别。


4
请将 ImageButton.onClickListener() 更改为 View.onClickListener(),并在 toast 方法末尾添加 .show()。示例代码如下:Toast.makeText(getApplicationContext(), "-", Toast.LENGTH_SHORT).show(); - Chirag
@ChiragRaval 你应该把它发布为答案。 - Audrius
1
@Audrius 感谢您的评论。我认为如果一个问题只需要添加简单的注释就可以解决,那么就没有必要发布答案。 - Chirag
3个回答

10

例如多个按钮点击监听器...

 ImageButton btminus = (ImageButton)findViewById(R.id.btminus);
 btminus.setOnClickListener(this);

 ImageButton btplus = (ImageButton)findViewById(R.id.btplus);
 btplus.setOnClickListener(this);

那么您的活动要实现OnClickListner并获取实现的方法是:

    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btplus:
            Toast.makeText(getApplicationContext(), "Plus is clicked" + "+", Toast.LENGTH_SHORT).show(); 
            break;
        case R.id.btminus:
            Toast.makeText(getApplicationContext(),"Minus is clicked" + "-", Toast.LENGTH_SHORT).show();
            break;
        default:
            break;
        }
    }

谢谢,我知道这种方法,但我更喜欢保持独立的函数:我只需要“.show()”。 - Luca Clavarino

7
 ImageButton btplus = (ImageButton)findViewById(R.id.btplus);        
    btplus.setOnClickListener( new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "+", Toast.LENGTH_SHORT).show();
        }
    });

1
在XML布局中注册onClick事件,然后在代码中处理它。这是我会做的方法:
<Button
android:id="@+id/btplus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me"
android:onClick="onBtnClicked">
</Button>

.class中的方法

 public void onBtnClicked(View v) {
        switch (v.getId()) {
        case R.id.btplus:
            Toast.makeText(getApplicationContext(), "Plus is clicked" + "+", Toast.LENGTH_SHORT).show(); 
            break;
        case R.id.btminus:
            Toast.makeText(getApplicationContext(),"Minus is clicked" + "-", Toast.LENGTH_SHORT).show();
            break;
        default:
            break;
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接