2014-04-07 22 views
1

这只是一个非常基本的问题。为什么它在模拟器上按下我的“真正的键盘”进入,但没有按下我的手机上的“输入”。它只是创造一条新线。按“回车”在模拟器中工作,但不在电话上

myEditText.setOnKeyListener(new View.OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_DOWN) {     
       if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER) 
         || (keyCode == KeyEvent.KEYCODE_ENTER)) { 
        todoItems.add(0, myEditText.getText().toString()); 
        aa.notifyDataSetChanged(); 
        myEditText.setText(""); 
        return true; 
       } 
      } 
      return false; 
     } 

    }); 

enter image description here

回答

0

这是一个老问题,似乎还没有到解决。这些情况有一个解决方法。简单地采取了EditText(或任何View那么可能需要这一点,并为它分配一个onEditorActionListener,就像这样:

final EditText editor = (EditText) findViewById(R.id.myEditText); 
editor.setOnEditorActionListener(EnterOnText); 

现在定义EnterOnText实现这样的:

TextView.OnEditorActionListener EnterOnText = new TextView.OnEditorActionListener() { 
    public boolean onEditorAction(TextView view, int actionId, KeyEvent event) { 
    if (actionId == EditorInfo.IME_ACTION_GO) { 
     final String msg = view.getText().toString(); 
     if (!msg.isEmpty()) { 
     // Do whatever you need here 
     ... 
     } 
    } 
    return true; 
    } 
}; 

现在,简单地改变布局的imeOptions属性:

android:imeOptions="actionGo" 

这将,相反,可能使哟你的模拟器的输入键不起作用,但会(应该)在所有物理设备上进行。

+0

我现在没有太多时间,所以也许我已经实施了错误..现在不适合我。但我会再试一次。但是,严重的是,为什么这样的基础需要解决方法? oO – Michael

+0

似乎在新版本中,输入密钥的实现已经发生变化,需要做。希望这可以在你获得更多时间时有效。 – nKn

+0

刚刚意识到,用HVGA键盘上的鼠标按下,但那里输入按钮,我用手指在手机上按它的作品。即使没有你的解决方法。这可能是CynagonMod的事吗? – Michael

相关问题