Подтвердить что ты не робот

Выполните как обычный щелчок, так и длинный щелчок на кнопке

У меня есть одна кнопка с именем CheckIn. Посмотрите на мой код.

    checkIn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

       Toast.makeText(HomeSafeActivity.this, "Normal Press", Toast.LENGTH_LONG).show();

    });


    checkIn.setOnLongClickListener(new View.OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {

            Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_LONG).show();



            return false;
        }
    });

Теперь, когда я нормально нажимаю кнопку, сообщение отображается как "Нормальное нажатие". Когда "Длинные" нажимают кнопку, сообщение показывает, как долго нажимают, а также "Нормальный" нажимают оба. Что я хочу, когда я долгое время нажимаю кнопку, только длительное событие прессования должно вызывать не нормальное событие прессования. Как я могу это достичь?

4b9b3361

Ответ 1

Я получил решение своего вопроса. Возвращаю true, а не false. Просто посмотрите ниже: -

    checkIn.setOnLongClickListener(new View.OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {

            Toast.makeText(HomeSafeActivity.this, "Long preess", Toast.LENGTH_LONG).show();

            return true;
        }
    });

Ответ 2

onLongClick() - Это возвращает логическое значение, указывающее, использовало ли вы событие, и его нельзя переносить дальше. То есть return true, чтобы указать, что вы обработали событие, и он должен остановиться здесь; return false, если вы не обработали его и/или событие должно продолжаться до любого другого on-click listeners.

Ответ 3

Вы должны вернуть true в случае длительного клика

Пример:

  btnBookingMasterCab.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            if(preCheckoutInfo!=null){
                rlChooseCard.setVisibility(View.VISIBLE);
            }
            return true;
        }
    });

Ответ 4

Здесь одно решение (это будет работать, если (когда оба запускаются), сначала запускается длинное нажатие, затем нормальное нажатие):

int clickFlag = 0;
checkIn.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View v) {

    if(clickFlag != 2){
      Toast.makeText(HomeSafeActivity.this, "Normal Press", Toast.LENGTH_SHORT).show();
      clickFlag = 0;
    }

  });

  checkIn.setOnLongClickListener(new View.OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {

      Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_SHORT).show();

      clickFlag = 2;
      return false;
    }
  });
}

Ответ 5

public boolean onLongClick (View v) is boolean возвращает true, если он нажат поэтому верните true,

Ответ 6

Попробуйте это; он должен работать.

checkIn.setOnLongClickListener(new View.OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {

        checkIn.setOnClickListener(null);

        Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_LONG).show();

        return false;
    }
});

Ответ 7

Попробуйте андроид: onclick = "btnPressed" вместо OnClickListener и использовать OnLongClickListener не проблема в моем тестовом коде