2011-09-28 19 views
51

दबाया जाता है मैं एक EditText है Softkeyboard कार्यवाही नहीं करती। मैं चाहता हूं कि कुछ पाठ लिखने के बाद, जब उपयोगकर्ता सॉफ्टकीबार्ड की पूर्ण कुंजी दबाता है, तो उसे कुछ खोज ऑपरेशन करना चाहिए जिसे मैंने बटन क्लिक ईवेंट में भी लागू किया है। उसको कैसे करे...???एंड्रॉयड: जब हो गया कुंजी

+0

बेहतर तरीका: https://stackoverflow.com/a/48810268/1912924 –

उत्तर

139

इस

editText.setOnEditorActionListener(new OnEditorActionListener() {   
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if(actionId==EditorInfo.IME_ACTION_DONE){ 
      //do something 
     } 
    return false; 
    } 
}); 
+1

धन्यवाद, यह काम किया ... –

15

के लिए किया और रिटर्न इस

दोनों यह काम करता है की कोशिश करो कोशिश करो।

EditText editText= (EditText) findViewById(R.id.editText); 
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() { 

       @Override 
       public boolean onEditorAction(TextView v, int actionId, 
         KeyEvent event) { 
        if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER 
          || actionId == EditorInfo.IME_ACTION_DONE) { 
         // Do your action 
         return true; 
        } 
        return false; 
       } 
      }); 
0

आप KeyEvent पकड़ते हैं और फिर इसकी कुंजीकोड जांचते हैं। FLAG_EDITOR_ACTION कुंजी है कि एक IME जिसका प्रवेश कुंजी दिया ऑटो लेबल है "अगला" या "किया" से आ रहे हैं दर्ज की पहचान के लिए प्रयोग किया जाता है

if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION) 
    //your code here 

डॉक्स here का पता लगाएं।

दूसरा विधि

myEditText.setOnEditorActionListener(new OnEditorActionListener() { 
@Override 
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) { 
    int result = actionId & EditorInfo.IME_MASK_ACTION; 
    switch(result) { 
    case EditorInfo.IME_ACTION_DONE: 
     // done stuff 
     break; 
    case EditorInfo.IME_ACTION_NEXT: 
     // next stuff 
     break; 
    } 
} 
}); 
0

इस

यह दोनों की हालत में काम करेंगे अपने कीबोर्ड दिखाया जा रहा है पर हस्ताक्षर या बगल में तीर पर हस्ताक्षर

YourEdittextName.setOnEditorActionListener(new TextView.OnEditorActionListener() 
    { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) 
     { 
      if(actionId== EditorInfo.IME_ACTION_DONE||actionId==EditorInfo.IME_ACTION_NEXT) 
      { 
       //Perform Action here 
      } 
      return false; 
     } 
    }); 

दर्ज करता है, तो उर लाल रेखा का सामना करना पड़ है कि क्या प्रयास करें तो यह करें ... आयात कुंजीवेन्ट और EditorInfo alt दबाकरदर्ज करेंतो सभी त्रुटियों को इस टिप्पणी में Kotlin साथ हटाने इसे ठीक होगा .......

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