我正在尝试检测Android键盘上的“Go”按下时间(右下角的最后一个键)。
我的代码可以在模拟器和我的Nexus 5上运行,但在其他一些Android设备上却没有
我做错了什么?
editTextMain.setImeActionLabel("Go", KeyEvent.KEYCODE_ENTER);
editTextMain.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
if(i==KeyEvent.KEYCODE_ENTER)
{
Intent intent = new Intent(thisActivity, ActivityRisultati.class);
startActivity(intent);
return true;
}
}
}
答案 0 :(得分:2)
试试这个
editText = (EditText) findViewById(R.id.edit_text);
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
// do your stuff here
}
return false;
}
});
答案 1 :(得分:1)
我的应用程序中有一些代码可以检测何时按下发送KEYCODE_ENTER
值的任何键。它会检测Motorola Droid 3滑出式键盘上的 Enter 和完成键。这是我的代码:
private OnKeyListener enterKeyListener = new OnKeyListener()
{
public boolean onKey(View v, int k, KeyEvent e)
{
/*
* "Enter" or "Done" key was pressed
*/
if( (e.getKeyCode() == KeyEvent.KEYCODE_ENTER) && (e.getAction() == KeyEvent.ACTION_UP) )
{
//
// Do some stuff ...
//
return true;
}
return false;
}
};
请注意KeyEvent.ACTION_UP
的附加检查。您可能需要在某些设备上执行此操作,以防止在按下按钮后立即触发侦听器,如果按住按钮,则会反复触发。在我的情况下,如果按下然后释放按键,我只希望它采取行动。
希望这有帮助。