2011-04-15 128 views
44

如果我有一个EditText,并且我想要听用户是否按下键盘上的“完成”按钮,我该怎么做?EditText上的完成按钮监听器?

+0

角度来考虑,手机可能有一个物理键盘,因此用户可能永远不会按完成按钮在键盘上,你有没有考虑过基于焦点丢失或editText编辑结束的操作? – blindstuff 2011-04-15 13:49:42

回答

72

代码是

final EditText edittext = (EditText) findViewById(R.id.edittext); 
edittext.setOnKeyListener(new View.OnKeyListener() { 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { 
       Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
      return false; 
     } 
    }); 

在这种 '的EditText' 是文本框

退房此链接Simply set setOnKeyListener to your editText

+5

嗨Dinash。只是发布链接通常没有帮助。最好提供一些示例代码来回答提问者问题,然后将其链接到源文章作为参考或进一步阅读。 – 2011-04-16 09:48:45

+0

嗨克里斯我虽然你可以找到从该链接本身的答案,但我仍然给链接本身提供一个确切的工作代码...代码是最终的EditText edittext =(EditText)findViewById(R.id.edittext); edittext.setOnKeyListener(new OnKeyListener(){public boolean onKey(View v,int keyCode,KeyEvent event){if((event.getAction()== KeyEvent.ACTION_DOWN)&&(keyCode == KeyEvent.KEYCODE_ENTER)){ Toast.makeText(HelloFormStuff.this,edittext.getText(),Toast.LENGTH_SHORT).show(); return true;} return false;}});希望你能找到它有帮助...在这'edittext'是文本字段的ID – Dinash 2011-04-18 07:34:47

+0

三星s4不工作这种方法 – 2017-04-10 22:07:31

59

Dinash的回答是不错的ID,但它不工作在所有设备上。下面的代码对所有设备

edittext.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
      Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
     return false; 
    } 
}); 
+0

这一个完美的作品 – 2017-03-28 06:40:59

+1

这应该被接受的答案 - 它是一个在三星s4作品 – 2017-04-10 22:09:12

+0

此外:该xml标签“android:imeOptions =”actionDone“”需要在EditText上设置。非常棒 - 谢谢! – jwehrle 2017-09-19 01:10:11

1

same Jone答案工作正常,但更换拉姆达:

etPointCombatFirst.setOnEditorActionListener((v, actionId, event) -> { 
       if (actionId == EditorInfo.IME_ACTION_DONE) { 
        Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show(); 
        return true; 
       } 
       return false; 
      });