如何检测Android键盘上何时按下“开始”

时间:2014-05-15 18:37:43

标签: java android

我正在尝试检测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;
         }
    }

}

2 个答案:

答案 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的附加检查。您可能需要在某些设备上执行此操作,以防止在按下按钮后立即触发侦听器,如果按住按钮,则会反复触发。在我的情况下,如果按下然后释放按键,我只希望它采取行动。

希望这有帮助。