2012-06-02 193 views
4

我爲輸入鍵事件添加了setOnKeyListener。但是,在我添加setOnKeyListener後,刪除(退格鍵)不起作用。當我刪除setOnKeyListener時,刪除鍵工作正常。刪除鍵不起作用

如何解決刪除鍵運行良好?

final EditText edittext = (EditText) findViewById(R.id.editText1); 

     edittext.setOnKeyListener(new OnKeyListener() { 


      @Override 
      public boolean onKey(View arg0, int arg1, KeyEvent event) { 
       // TODO Auto-generated method stub 
       if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { 

        InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
         in.hideSoftInputFromWindow(edittext 
           .getApplicationWindowToken(), 
           InputMethodManager.HIDE_NOT_ALWAYS); 

        applySearch(); 


       } 
       return true; 
      } 


     }); 

回答

4

如果您返回True,您正在處理所有密鑰。試試這個:

if (event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { 
    // something here 
    return true; 
} 

// otherwhise 
return false; 

Android: Problem with overriding onKeyListener for a Button

+0

謝謝!我的問題是在切換鍵盤語言後刪除停止工作,儘管我只覆蓋了輸入鍵。此外,這個問題沒有出現在Android 8上,但在早期版本中。你爲我節省了時間! –

3

按照documentationonKey返回True如果聽衆已經消耗的情況下,否則爲false。你的情況:

@Override 
public boolean onKey(View arg0, int arg1, KeyEvent event) { 
    ... 
    return true; // Try to return false instead 
} 

當你的方法返回true鍵不處理,退格鍵不起作用。