سؤال

In my code, ontouch listener of a button is fired twice. please find below the code. I am using Google API 2.2.

Code in java file ....

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;     
                }     
            });

Please help me on solving this issue.

هل كانت مفيدة؟

المحلول

instead of using onTouchListener, you should use onClickListener for buttons.

submit_button.setOnClickListener(new OnClickListener() {    
    public void onClick(View v) {
        startActivity(new Intent(First_Activity.this, Second_Activity.class));
        finish();
    }
});

نصائح أخرى

It fires twice because there is a down event and an up event.

The code in the if branch always executes since the action is set to 0 (which, incidentally, is the value of MotionEvent.ACTION_DOWN).

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

Maybe you meant to write the following code instead?

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

But you really should use OnClickListener as Waqas suggested.

Did you attach the listener two to view elements? Before reacting on the event check from which view it comes using the View arg0 parameter.

int action = event.getActionMasked();

Use this.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top