2010-11-04 2 views
2

Я использовал этот учебник http://mobiforge.com/developing/story/using-google-maps-android для отображения вида карты и установки события onTouch для отображения тоста (широта/долгота) при нажатии на определенную область. Теперь моя проблема в том, что сообщение Toast отображается в тот момент, когда я касаюсь экрана, даже если он перемещает карту? Я хочу отображать тост, только если точка касания и точка касания совпадают. Как это реализовать?Android: Как сделать onTouch работать как onClick?

ответ

1

Проверьте, если бит ход устанавливается в MotionEvent

if(event.getAction() & MotionEvent.ACTION_MOVE == MotionEvent.ACTION_MOVE) 
+0

Я не понимаю. Он показывает ошибку. –

+0

Какая ошибка? –

+0

Но по какой-то причине он не работает :(Я до сих пор получаю тост, отображаемый на ощупь. –

0

Это правильный способ сделать это? Я уверен, что есть лучший способ.

if (event.getAction() == 0) {     
    touchX = (int) event.getX(); 
    touchY = (int) event.getY(); 
} 
if(event.getAction() == 1) { 
    if(event.getX() == touchX && event.getY()== touchY){ 
    GeoPoint p = mapView.getProjection().fromPixels((int) event.getX(), (int)event.getY()); 
     Toast.makeText(getBaseContext(), 
     p.getLatitudeE6()/1E6 + "," + 
     p.getLongitudeE6() /1E6 , 
     Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

Нет, 'event.getAction() == 0' неверный путь. 'event.getAction()' возвращает все флаги. Вы должны просто проверить один бит. –

0

Это работает для меня, когда я нажимаю вниз и не перетащить ничего не происходит, но если нажать вниз и отпустить это сработало! как и поведение onClickListener.

public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_UP){ 
     // yer Code here ........... 
     } 

     return false; 
    } 
+0

Это работает для меня :(Он стрелял всякий раз, когда я отпускал палец. Даже если бы я сделал перетаскивание. –

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