2012-06-07 19 views
11

मैं एक edittext और मेरे लेआउट में एक बटन है और मेरे कोड में मैं edittext के रूप में अशक्त की keyListener सेट कर रहा हूंसंपादित पाठ कुंजी श्रोता

editText.setKeyListener(null); 

ताकि मैं अपने edittext में टाइप नहीं कर सकते। अब मेरे बटन पर क्लिक करें, मुझे अपने ediitext में टाइप करने में सक्षम होना चाहिए। मैं उसे कैसे कर सकता हूँ। यह एक साधारण समस्या है, लेकिन मुझे कोई समाधान नहीं मिल रहा है। कोई भी सहायताकाफी प्रशंसनीय होगी।

उत्तर

19

मैं शायद देर से अब कर रहा हूँ लेकिन, इस तरह से मैं यह कर रहा है:

public class MyActivity extends Activity 
{ 
    private KeyListener listener; 
    private EditText editText; 

    public void onCreate(...) 
    { 
     editText = ... // Get EditText from somewhere 
     listener = editText.getKeyListener(); // Save the default KeyListener!!! 
     editText.setKeyListener(null); // Disable input 
    } 

    // When you click your button, restore the default KeyListener 
    public void buttonClickHandler(...) 
    { 
     editText.setKeyListener(listener); 
    } 
} 

मूल रूप से, आप पहली बार बचाने के एडिटटेक्स्ट का डिफ़ॉल्ट KeyListenersetKeyListener(null) पर कॉल करने से पहले। फिर, जब आप अपने बटन पर क्लिक करते हैं, तो आप पहले से सहेजे गए डिफ़ॉल्ट श्रोता को पास करते हुए setKeyListener पर कॉल करते हैं।

+0

बस जो मैं चाहता था ... कोशिश नहीं की है, लेकिन यह वादा करता है। – SKT

1

एंड्रॉइड में इसकी बग Bugs देखें।

लेकिन xml फ़ाइल में आप कर सकते हैं it.Using android:editable="false"

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:editable="false" <<<<<<< 
</EditText> 
+0

क्षमा करें अगर हम ऐसा करते हैं हम अभी भी भी विकलांग मोड में edittext में टाइप करने के लिए सक्षम हो जाएगा। मैं इसे एक उत्तर के रूप में स्वीकार नहीं कर सकता हूं, हालांकि यह उपयोगकर्ता को यह महसूस कर सकता है कि वह – SKT

+0

@ user1172936 में टाइप करने में सक्षम नहीं हो सकता है, मैं अपने उत्तर –

+0

को अपडेट करता हूं जो मैं करना चाहता हूं केवल कोड के माध्यम से है। क्योंकि जब मैं उस बटन को फिर से टैप करता हूं। मैं edittext की संपत्ति बनाना चाहता था क्योंकि यह पहले था (इसमें टाइप नहीं किया जा सका) तो मैं एक्सएमएल के लिए नहीं जा सकता ... लेकिन मैं जांच करूंगा कि जावा कोड में संपादन योग्य जैसी कोई संपत्ति है ... मतलब है कि अगर आप एक उत्तर पाएं कृपया इसे पोस्ट करके मेरी मदद करें ... धन्यवाद – SKT

3

आप इस का उपयोग कर सकते हैं:

// When you click your button, restore the default KeyListener 
public void buttonClickHandler(...) 
{ 
    editText.setKeyListener(new EditText(getApplicationContext()).getKeyListener()); 
} 
+0

मुझे लगता है कि वर्षा का जवाब अधिक सही है। यह edittext – SKT

+0

के मूल कीलिस्ट को रखेगा, मैं बरई की विधि ट्रे करता हूं, लेकिन यह मेरे लिए काम नहीं करता है, इसलिए मैं यह विधि, क्योंकि यह काम करता है। :) –

+0

वर्षाई की विधि मेरे लिए भी काम नहीं करती थी। हालांकि यह एक काम किया। – Rishabh876