Question

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.

Was it helpful?

Solution

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

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top