मैंने एक संपादन टेक्स्ट-फ़ील्ड को परिभाषित किया है और जब उपयोगकर्ता उस फ़ील्ड को संपादित करता है तो मैं सूचित होना चाहता हूं। तो मैंने सोचा: सरल - मैं एक ऑनके लिस्टनर जोड़ता हूं और इसलिए मैंने किया। लेकिन भले ही टेक्स्ट फ़ील्ड संपादित हो जाए (और यहां तक कि दर्ज/संशोधित पाठ भी प्रदर्शित करता है) मुझे कोई कॉलबैक नहीं मिलता है, यानी LOG-output दिखाई नहीं देता है।एंड्रॉइड: मेरा ऑनकी लिस्टनर() क्यों नहीं कहा जाता है?
TextView text = new TextView(this);
text.setText(...);
...
text.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event) {
TextView tv = (TextView)v;
CharSequence val = tv.getText();
Log.v(TAG, "value: " + val);
// ... rest omitted for brevity
}
});
कोई विचार, क्यों कॉलबैक कभी नहीं कहा जाता है?
माइकल
पीएस .: Sigh! एंड्रॉइड वास्तव में विषमता से भरा है! ऐसा लगता है कि अब तक जो कुछ भी मैंने छुआ नहीं है, वह तत्काल काम करता है जैसा कि कोई उम्मीद करेगा। और - विश्वास करो या नहीं - मुझे जीयूआई, एएसपी के साथ बहुत सारे अनुभव हैं। जावा में (एडब्ल्यूटी, स्विंग, एसडब्ल्यूटी, आप इसे नाम दें ...) लेकिन एंड्रॉइड वास्तव में एक कठिन जानवर है!
@Falmarri पर एक आकर्षण की तरह, क्या उस के साथ गलत क्या है? संकल्पनात्मक रूप से, getText वर्णों का अनुक्रम देता है, इसलिए उस प्रकार के चर में वापसी मान को संग्रहीत करने के इलाज में कुछ भी गलत नहीं है। और आपको getText विधि का उपयोग करने के लिए उस कलाकार को करना है। आप टेक्स्ट व्यू लेने के लिए केवल ऑनकी विधि को नहीं बदल सकते हैं क्योंकि यह ऑनके लिस्टनर में एक विधि को ओवरराइड करता है। (निश्चित रूप से, उस पर @ ओवरराइड होना चाहिए लेकिन यह इस मामले में बहुत स्पष्ट है।) – MatrixFrog
@ फ़ल्मरी: आपने स्पष्ट रूप से एंड्रॉइड के लिए प्रोग्राम नहीं किया है। मैं स्ट्रिंग्स को भी पसंद करता हूं लेकिन एंड्रॉइड हर्स स्ट्रिंग्स के बजाय चारों ओर CharSequence की जगह देता है, इसलिए आपको अक्सर यास्ट्रिंग() को अक्सर करना होता है। और यदि कोई विधि शीर्षलेख केवल "व्यू" को परिभाषित करता है लेकिन आपको पता है कि यह एक टेक्स्ट व्यू है और आपको केवल उन तरीकों की आवश्यकता है जो केवल टेक्स्ट व्यू प्रदान करते हैं, तो आप और क्या कर सकते हैं? एक बेहतर सुझाव मिला? – mmo