Обработка слушателей с несколькими нажатиями кнопок - PullRequest
4 голосов
/ 07 октября 2011

У меня есть две кнопки ImageButton в моем макете, «плюс» и «минус». Я прикрепляю прослушиватель щелчков к кнопке «плюс» с простым тост-сообщением в функции щелчка, и он работает.

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

... и больше никаких нажатий кнопок работает! Щелчок «плюс» тоже перестает работать.

Я видел много примеров на эту тему, но я не вижу никакой разницы между ними (работающими) и моими.

Ответы [ 3 ]

10 голосов
/ 07 октября 2011

Например, списки с несколькими нажатиями кнопок ...

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

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

тогда ваша деятельность хочет реализовать onclicklistener, и вы получите реализованный метод:

    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;
        }
    }
7 голосов
/ 07 октября 2011
 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 голос
/ 14 мая 2015

Зарегистрированное событие onClick в макете XML, а затем обработать его в коде. Вот как бы я это сделал:

<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;
        }
    }
...