2012-06-02 154 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键不处理,退格键不起作用。