getAction() выдает только ACTION_DOWN

#java #android

#java #Android

Вопрос:

Для приложения, которое я пишу, я хочу вызвать определенное действие, как только пользователь уберет палец с экрана. Я понял, что мне нужно проверить, является ли event.getAction() ACTION_UP, но все, что я получаю от getAction (), — это ACTION_DOWN. Мой код выглядит следующим образом:

 menu = new MenuView(this);
        menu.setBackgroundColor(Color.WHITE);
        menu.setKeepScreenOn(true);
...
setContentView(menu);
 menu.requestFocus();
...
public class MenuView extends View
{
...
public MenuView(Context context) 
    {
        super(context);
        setFocusable(true);
    }
  

Кто-нибудь знает, в чем причина проблемы?

Заранее благодарю вас.

Комментарии:

1. используете ли вы детектор жестов? каков ваш соответствующий код, в котором вы проверяете event.getAction?

2. @Переопределить общедоступное логическое значение onTouchEvent(событие MotionEvent) { if ( event.getAction() != MotionEvent. ACTION_DOWN) // никогда не вызывался Извините, я не знаю, как форматировать в ответах… Спасибо за вашу помощь!

Ответ №1:

убедитесь, что onTouch возвращает true, который сообщает ОС, что ваш слушатель обрабатывает событие касания.

из документации: onTouch() — Это возвращает логическое значение, указывающее, использует ли ваш слушатель это событие. Важно то, что это событие может иметь несколько действий, которые следуют друг за другом. Итак, если вы возвращаете false при получении события down action, вы указываете, что вы не использовали событие и также не заинтересованы в последующих действиях из этого события. Таким образом, вы не будете вызваны для каких-либо других действий в рамках события, таких как жест пальцем, или возможное событие действия вверх.

http://developer.android.com/reference/android/view/View.html#onTouchEvent(android.view .MotionEvent)

Комментарии:

1. Это помогло — спасибо! Это было странно, потому что оно отлично работало в другом приложении — теперь я узнаю, что другое возвращает true, в то время как это возвращает super.onTouchEvent. Большое спасибо!