2012-02-15 20 views
5

मेरे पास EditText है। मैं टीपी कुछ करता हूं, जब उपयोगकर्ता EditText बदलते समय कुंजी दर्ज करता है। मैं उसे कैसे कर सकता हूँ?एडिटटेक्स्ट कैसे सुनें?

सबसे सरल विधि:

final EditText edittext = (EditText) findViewById(R.id.edittext); 
edittext.setOnKeyListener(new OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     // If the event is a key-down event on the "enter" button 
     if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
      (keyCode == KeyEvent.KEYCODE_ENTER)) { 
      // Perform action on key press 
      Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
     return false; 
    } 
}); 
+0

ठीक है, और मैं CharSequence s और Key Enter की तुलना कैसे कर सकता हूं? – ruslanys

उत्तर

5

नमूना कोड:

private TextView.OnEditorActionListener mEnterListener = 
    new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_NULL && event.getAction() == KeyEvent.ACTION_DOWN) { 
       /* If the action is a key-up event on the return key, do something */ 
      } 
     return true; 
    }); 

फिर, श्रोता (अपने onCreate विधि में यानी) सेट टेक्स्ट वॉचर

your_edittext.addTextChangedListener(new InputValidator()); 

    private class InputValidator implements TextWatcher { 

     public void afterTextChanged(Editable s) { 

     }  
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) {     

     }  
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 

     }  
    }  
} 
-2
your_edittext.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //do something 
    } 

}); 
+0

नहीं, यह काम नहीं करता है। मुझे कुंजीबॉर्ड पर कुंजी ENTER सुनने की आवश्यकता है जबकि उपयोगकर्ता संपादन टेक्स्ट में कुछ टेक्स्ट टाइप करते हैं। मुझे कोई परवाह नहीं है जब उपयोगकर्ता स्क्रीन को छूएगा। – ruslanys

0

आप इस उद्देश्य के लिए TextWatcher उपयोग करने के लिए की जरूरत है। TextWatcher और एंड्रॉइड textwatcher एपीआई के साथ काम करने के तरीके पर एक उदाहरण दिया गया है।

+0

ओह हाँ! आपका बहुत बहुत धन्यवाद। यह एक अच्छा निर्णय है। – ruslanys

4

पहले, बनाने के एक OnEditorActionListener (एक निजी उदाहरण चर, उदाहरण के लिए के रूप में): के लिए

EditText mEditText = (EditText) findViewById(...); 
mEditText.setOnEditorActionListener(mEnterListener); 
+0

'ब्लूटूथकैट' नमूना कोड में छिपाए जाने के तरीके पर एक उदाहरण है: http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/BluetoothChat.html –

+0

वह विधि पिछले की तुलना में अधिक कठिन है, वैसे भी धन्यवाद। – ruslanys

+0

मुझे खेद है कि आपकी विधि बेहतर है। धन्यवाद) – ruslanys

1

एक और विकल्प है:

your_edittext.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void afterTextChanged(Editable s) {} 

     @Override  
     public void beforeTextChanged(CharSequence s, int start, 
     int count, int after) { 
     } 

     @Override  
     public void onTextChanged(CharSequence s, int start, 
     int before, int count) { 

     } 
     }); 
संबंधित मुद्दे