2014-08-27 72 views
0

我有代碼鍵碼聽ENTER鍵通到下一個編輯文本

此塊
@Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
     if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) 
     { 
      int b = v.getId(); 
      switch (v.getId()) 
      { 
      case R.id.EditTextSurname: 
       EditTextName.requestFocus(); 
       break; 
      case R.id.EditTextName: 
       // TODO pass to remark 
       break; 
      case R.id.EditTextRemark: 
       // TODO Hide keyboard 
       break; 
      } 
     } 
     return true; 

    } 

我聆聽自己EDITTEXT的回車鍵。當我按下回車鍵時,我想傳遞下一個編輯文本。但是,如果在// TODO通此言

我設置

EditTextRemark.requestFocus(); 

我可以調試,它在第一次請求的焦點,沒有再次點擊進入就會傳遞到下一個EDITTEXT通過看。 如果有人對我有一個解釋的解決方案?謝謝。

回答

0

好吧,我發現這個問題,你需要聲明事件Action(鍵被按下),否則它會傳遞onkey。

@Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
     if (event.getAction() == KeyEvent.ACTION_DOWN 
       && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) 
     { 
      switch (v.getId()) 
      { 
      case R.id.EditTextSurname: 
       EditTextName.requestFocus(); 
       break; 
      case R.id.EditTextName: 
       EditTextRemark.requestFocus(); 
       break; 
      case R.id.EditTextRemark: 
       hideSoftKeyboard(); 
       break; 
      } 
     } 
     return true; 

    }