2012-03-03 20 views
5

मेरे कोड में, बटन के ऑनचच श्रोता को दो बार निकाल दिया जाता है। कृपया कोड के नीचे खोजें। मैं Google एपीआई 2.2 का उपयोग कर रहा हूं।एंड्रॉइड - टच श्रोता पर दो बार गोलीबारी

जावा फ़ाइल में कोड ....

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

कृपया मुझे इस मुद्दे को सुलझाने पर मदद करते हैं।

उत्तर

7
बजाय onTouchListener का उपयोग करने का

, आप onClickListener बटन के लिए उपयोग करना चाहिए।

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

धन्यवाद यह काम किया। – Prem

0

क्या आपने श्रोता दो तत्वों को देखने के लिए संलग्न किया था? इवेंट चेक पर प्रतिक्रिया करने से पहले यह देखें कि यह View arg0 पैरामीटर का उपयोग करके आता है।

14

यह दो बार आग लगता है क्योंकि नीचे की घटना और एक अप घटना होती है।

यदि शाखा को कार्रवाई 0 पर सेट की जाती है तो कोड हमेशा कोड निष्पादित करता है (जो संयोगवश, मोशनइवेंट.एक्शन_DOWN का मान है)।

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

शायद आप इसके बजाय निम्नलिखित कोड लिखना चाहते थे?

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

लेकिन आपको वास्तव में ऑनक्लिक लिस्टनर का उपयोग वकास के रूप में करना चाहिए।

+0

वास्तव में सहायक, बहुत बहुत धन्यवाद। – katzenhut

0
int action = event.getActionMasked(); 

इसका उपयोग करें।

+3

यह क्या करता है? यह कैसे काम करना चाहिए? इस तरह के उत्तर कम से कम सहायक हैं। कृपया कोड की एक पंक्ति के बजाय कुछ स्पष्टीकरण प्रदान करें। धन्यवाद – katzenhut

संबंधित मुद्दे