2012-07-03 15 views
20

पर एंटर कुंजी दबाए जाने के बाद नहीं कहा जाता है मुझे नवीनतम जेली बीन एमुलेटर के व्यवहार में समस्या है। मेरे ऐप में मेरे पास कई EditTexts हैं। जब कोई उपयोगकर्ता कीबोर्ड पर ENTER कुंजी दबाता है तो OnEditorActionListener विशेष हैंडलिंग प्रदान करता है। यह आईसीएस तक काम करता था, लेकिन अब जेली बीन पर श्रोता कॉलबैक विधि onEditorAction() अब कॉल नहीं किया जाता है। EditText में केवल एक नई लाइन डाली गई है।ऑनडिटरएक्शन() को जेली बीन एमुलेटर

EditText testEditText = new EditText(context); 
testEditText.setOnEditorActionListener(new OnEditorActionListener() { 

    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     Log.d(TAG, "onEditorAction() called"); 
     return false; 
    } 
}); 
addView(testEditText); 

इस Jelly Bean में एक बग है:

यह इस तरह से reproduced किया जा सकता है? या एम्यूलेटर में? या व्यवहार जानबूझ कर बदल गया है?

मैं इस कई परीक्षण किया है: null keyevent and actionid = 0 in onEditorAction() (Jelly Bean/Nexus 7)

+1

यह नमूना परियोजना की उम्मीद के रूप में व्यवहार: https://github.com/commonsguy/cw-omnibus/tree/master/ActionBar/ActionBarDemo – CommonsWare

+0

@CommonsWare: आप, मैं के लिए एक समाधान पाया धन्यवाद मेरी आपके कोड में समस्या। यदि मैं निम्न कार्य करता हूं, तो ENTER कुंजी को वर्चुअल कीबोर्ड पर एक गो कुंजी के साथ आदान-प्रदान किया जाता है, जो एडिटरएक्शन() पर संपादित होता है: editText.setRawInputType (InputType.TYPE_CLASS_TEXT); editText.setImeOptions (EditorInfo.IME_ACTION_GO); – Hendrik

+1

या एक्सएमएल में: एंड्रॉइड: imeOptions = "actionGo" \t \t एंड्रॉइड: इनपुट टाइप = "टेक्स्ट" – Hendrik

उत्तर

32

किसी और इस सवाल का मिलता है:

मजे की बात है कि किसी और लिखते हैं कि विधि कहा जाता हो जाता है, लेकिन अप्रत्याशित मानकों के साथ एक नेक्सस 7 जेली बीन यहाँ चलाने पर जेली बीन एमुलेटर पर और एडिटरएक्शन() पर श्रोता कॉलबैक विधि वर्चुअल कीबोर्ड पर एंटर कुंजी दबाए जाने पर वास्तव में अब कॉल नहीं किया जाता है।

जैसा कि मैंने एक संभावित समाधान या वर्कअराउंड के ऊपर उल्लेख किया है, उपलब्ध कुंजी कुंजी में से एक के साथ एंटर कुंजी को प्रतिस्थापित करना है। वे अभी भी एडिटरएक्शन() पर ट्रिगर करते हैं। मुझे इनपुट प्रकार भी निर्दिष्ट करना पड़ा।

editText.setRawInputType(InputType.TYPE_CLASS_TEXT); 
editText.setImeOptions(EditorInfo.IME_ACTION_GO);
<EditText 
... 
android:imeOptions="actionGo" 
android:inputType="text" /> 
+2

और क्या होगा यदि फोन आईम क्रियाओं का समर्थन नहीं करता है? (ऐसे कई उपकरण हैं जो नहीं करते हैं।) – Darpan