2013-11-06 6 views
1

Я пытаюсь прослушать сенсорный релиз, но событие не увольняется.Android прослушивает сенсорный релиз

Это мой код:

public class MyView extends View { 
    public MyView(final Context context) { 
     super(context); 
     setOnTouchListener(new OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent e) { 
       if (e.getAction() == MotionEvent.ACTION_DOWN) { 
        makeToast("press", context); 
       } else if (e.getAction() == MotionEvent.ACTION_UP || e.getAction() == MotionEvent.ACTION_CANCEL) { 
        makeToast("release", context); 
       } 

       return false; 
      } 
     }); 
    } 

    void makeToast(String s, Context c) { 
     CharSequence text = s; 
     int duration = Toast.LENGTH_SHORT; 

     Toast toast = Toast.makeText(c, text, duration); 
     toast.show(); 
    } 

} 

Класс активности:

public class MyActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     MyView v = new MyView(getApplicationContext()); 
     setContentView(v); 
    } 
} 

Что происходит, что, когда я прикасаюсь к экрану, тост с «прессой», написанное в нем появляется, но когда я выпускаю прикосновение, не появляется тост, в то время как я ожидаю тоста с «выпуском», написанным на нем, чтобы появиться.

Что мне не хватает?

ответ

2

Вам нужно вернуть true вместо false внутри вашего onTouchListener.

Случается, что сначала действие было инициировано, но вы вернули ложное значение, что действие Down Down не было обработано.

Если вы вернете true, это гарантирует, что каждое действие, которое он ловит, будет обработано полностью, вы вернете false только в том случае, если вы знаете другое представление, необходимое для обработки действия.

Удачи!

+0

Работал, спасибо! – BackSlash

Смежные вопросы