Событие LongClick также вызывает событие Click - PullRequest
14 голосов
/ 12 апреля 2009

Я использую события 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;
    }

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

Спасибо.

Ответы [ 3 ]

35 голосов
/ 12 апреля 2009

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

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

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

0 голосов
/ 03 апреля 2019

Решение On LongClick SingleClick не будет работать:

rippleView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            //Your code
            }
        });
rippleView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                return true;
            }
        });
0 голосов
/ 20 октября 2010

вот краткое описание касания события: http://rxwen.blogspot.com/2010/10/android-touch-event-summary.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...