Android - при касании слушатель выстрелил дважды - PullRequest
5 голосов
/ 03 марта 2012

В моем коде слушатель кнопки ontouch запускается дважды.пожалуйста, найдите ниже код.Я использую Google API 2.2.

Код в java-файле ....

submit_button = (Button)findViewById(R.id.submit);

 submit_button .setOnTouchListener(new View.OnTouchListener()
        {       
            public boolean onTouch(View arg0, MotionEvent arg1) { 
                int action=0;
                if(action == MotionEvent.ACTION_DOWN)
                {                   

                    startActivity(new Intent(First_Activity.this, Second_Activity.class));
                    finish(); 
                }
                return true;     
                }     
            });

Пожалуйста, помогите мне решить эту проблему.

Ответы [ 4 ]

14 голосов
/ 03 марта 2012

Он срабатывает дважды, потому что есть событие «вниз» и «вверх».

Код в ветви if всегда выполняется, поскольку действие установлено в 0 (что, кстати, является значением MotionEvent.ACTION_DOWN).

int action=0;
if(action == MotionEvent.ACTION_DOWN)

Может быть, вы хотели написать следующий код?

if(arg1.getAction() == MotionEvent.ACTION_DOWN)

Но вы действительно должны использовать OnClickListener, как предложил Вакас.

7 голосов
/ 03 марта 2012

вместо использования onTouchListener , вы должны использовать onClickListener для кнопок.

submit_button.setOnClickListener(new OnClickListener() {    
    public void onClick(View v) {
        startActivity(new Intent(First_Activity.this, Second_Activity.class));
        finish();
    }
});
0 голосов
/ 03 октября 2012
int action = event.getActionMasked();

Используйте это.

0 голосов
/ 03 марта 2012

Вы прикрепили слушателя два для просмотра элементов? Прежде чем реагировать на событие, проверьте, из какого вида оно поступает, используя параметр View arg0.

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