2011-11-30 18 views
12

का जवाब नहीं मैं निम्नलिखित काम कोड के साथ एक TextView है:TextView onClick एक टैप

private OnClickListener answer1TextViewListener = new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     if(Answer1Win){ 
      Toast.makeText(QuizScreen.this,"Correct ",2).show(); 
     } else 
     { 
      Toast.makeText(QuizScreen.this,"Incorrect, Pick Another Answer",2).show(); 
     } 
    } 
}; 

मेरे समस्या टोस्ट केवल एक के बाद प्रदर्शित किया जाता है:

Answer1TextView = (TextView) findViewById(R.id.editText1); 
Answer1TextView.setOnClickListener(answer1TextViewListener); 

और यहाँ मेरी onClickListener है दो बार टैप। मुझे इस व्यवहार को ड्राइव करने की सेटिंग नहीं मिल रही है, एक टैप के बाद प्रदर्शित करने के लिए गलत सेट किया जा सकता है।

+0

यह दोनों सही और गलत के लिए काम करता है, के बाद भी 2 नल छोड़ देता है? – JustCurious

उत्तर

23

पहला क्लिक केवल टेक्स्टबॉक्स पर ध्यान केंद्रित करता है, फिर दूसरा क्लिक वास्तव में एक क्लिक के रूप में संभाला जाता है। बल्कि एक onClickListener का उपयोग करने से, आप एक onFocusChangeListener

+28

वैकल्पिक रूप से, एक्सएमएल में टेक्स्ट व्यू में 'एंड्रॉइड: फोकस करने योग्य = "झूठा" सेट करें, या' उत्तर 1TextView.setFocusable (false) 'पर कॉल करें। – kcoppock

+1

केसी, .setFocusable (झूठा); समस्या का समाधान किया, सहायता के लिए धन्यवाद। आपके सुझाव के लिए –

+0

केसी धन्यवाद। .setFocusable (गलत); मेरे लिए काम किया महान। उपयोगी सामान पोस्ट करना जारी रखें। धन्यवाद फिर से – sathish

1

के साथ बेहतर किस्मत हो सकता है के रूप में क्रिस ने कहा, पहले नल TextView केंद्रित है और दूसरे टैप यह क्लिक करता है।

android:focusableInTouchMode="false" सेट करना टचस्क्रीन के लिए समस्या को हल करता है लेकिन गैर-टचस्क्रीन उपकरणों के लिए कार्यक्षमता को तोड़ने के बिना।

आप बस android:focusable="false" उपयोग करने के लिए है कि सभी पर देखने क्लिक करने से रोका जा सके, उदाहरण के लिए, डी-पैड उपयोगकर्ताओं के लिए थे, तो।

+0

एंड्रॉइड: फोकस करने योग्य = "झूठा" मेरे लिए काम किया! +1 – dira

+0

मुझे लगता है कि डी-पैड आज की दुनिया में वास्तव में प्रासंगिक नहीं है। मुझे नहीं लगता कि 'फोकस करने योग्य = "झूठा" किसी भी अक्षम उपयोगकर्ताओं के लिए कार्यक्षमता को रोक देगा, जहां तक ​​मैं कह सकता हूं। – CorayThan

+0

@ कोरयहान यह देखते हुए कि दोनों गुण सेट करने के लिए समान रूप से आसान हैं, व्यक्तिगत रूप से मैं उस व्यक्ति को चुनता हूं जो कुछ उपकरणों पर कार्यक्षमता को तोड़ता नहीं है - भले ही वे डिवाइस इस समय कम आम हों। हालात बदलते हैं (जैसे एंड्रॉइड टीवी अधिक आम हो सकते हैं) और यह मानते हुए कि आपके उपयोगकर्ता सभी टचस्क्रीन भविष्य में सिरदर्द का कारण बन सकते हैं - और इस मामले में वैसे भी इसका कोई तत्काल लाभ नहीं है। (अस्वीकरण: मैंने एंड्रॉइड के साथ अद्यतित नहीं रखा है, इसलिए यह मानते हुए कि गुण तब भी करते हैं जब उन्होंने उत्तर लिखा था) –

0

ऐसा करने के लिए सही तरीका android:clickable="true"

+0

टेक्स्ट व्यू डिफ़ॉल्ट रूप से क्लिक करने योग्य है। यह शायद मुद्दा नहीं है। – greg7gkb

+0

मैंने कोशिश की है क्योंकि मुझे एक ही समस्या है।^डालकर, मेरी समस्या हल करें। मेरा टेक्स्ट व्यू केवल जवाब देने के लिए 1 टैप की आवश्यकता है। –

1

मुद्दा हो सकता है कि textIsSelectable सत्य है। एक्सएमएल में टेक्स्ट व्यू के लिए textIsSelectable="false" सेट करें।

0

उपयोग OnTouchListener बजाय onFocusListener दो बार चलाता है जब आप में प्रवेश करने और कुंजी