Событие LongClick также вызывает событие Click

Я использую onLongClick и onClick события кнопки для ввода пользовательских входов. Всякий раз, когда; пользователь долго щелкает и запускает событие onLongClick, также запускается событие onClick. Я не мог найти свою проблему. Код двух методов показан ниже:

@Override
    public void onClick(View v) {
        switch(((Button) v).getId())
        {
        case R.id.enter:
            EntertheNumber();
            break;
        case R.id.clear:
            CleartheNumber();
            break;
        case R.id.number_zero:
        case R.id.number_one:
        case R.id.number_two:
        case R.id.number_three:
        case R.id.number_four:
        case R.id.number_five:
        case R.id.number_six:
        case R.id.number_seven:
        case R.id.number_eight:
        case R.id.number_nine:
            AddtotheNumber(mEditor, (Button) v);
            break;
        }
@Override
    public boolean onLongClick(View view) {
        if(SMBGuesstheNumber.bDisplayFlagList)
        {
            theActiveButton = (Button) view;
            showDialog(R.id.display_flaglist);
        }
        return false;
    }

На самом деле, мой проект - Open Source. Итак, вы можете найти весь код http://code.google.com/p/guessthenumber/

Спасибо.

Ответы

Ответ 1

Я не уверен, в каком порядке происходят эти события, но обработчик onLongClick возвращает bool, чтобы указать, было ли обработано событие. Вы должны вернуть true, если будете обрабатывать его, чтобы другие вызовы не вызывались. Я не знаю, предотвратит ли это onClick(), даже если это возможно.

Вы также можете отключить и выключить эти события, используя setClickable (boolean) и setLongClickable (boolean)

Вы можете найти эту информацию и узнать о событиях пользовательского интерфейса здесь.