2011-04-15 125 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; 
      });