Java Android onEditorAction强制关闭

Java Android onEditorAction强制关闭,java,android,Java,Android,我试图在用户按下键盘上的“下一步”后执行一些功能,但我遇到了一些问题。该应用程序可以编译,但一旦按下“下一步”,就会崩溃 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText etGhs = (EditText) fin

我试图在用户按下键盘上的“下一步”后执行一些功能,但我遇到了一些问题。该应用程序可以编译,但一旦按下“下一步”,就会崩溃

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText etGhs = (EditText) findViewById(R.id.etGhs);

    // Calculate DGM once the user has finished typing
    etGhs.setOnEditorActionListener(
            new EditText.OnEditorActionListener() {
                @Override
                public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                    if (actionId == EditorInfo.IME_ACTION_SEARCH ||
                            actionId == EditorInfo.IME_ACTION_DONE ||
                            event.getAction() == KeyEvent.ACTION_DOWN &&
                                    event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
                        if (!event.isShiftPressed()) {
                            // the user is done typing.
                            // get string from etGhs
                            double ghs = Integer.parseInt(etGhs.getText().toString());
                            double dgm = ghs * 0.000064179; // calculate avg DGM

                            setDgmAndDailyBtc(dgm);
                            return true; // consume.
                        }
                    }
                    return false; // pass on to other listeners.
                }
            });
}
这是航海日志

03-11 20:51:09.847  11528-11528/com.devinshoe.bitcoinprofit.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.devinshoe.bitcoinprofit.app, PID: 11528
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.KeyEvent.getAction()' on a null object reference
        at com.devinshoe.bitcoinprofit.app.MainActivity$1.onEditorAction(MainActivity.java:27)
        at android.widget.TextView.onEditorAction(TextView.java:4236)
        at com.android.internal.widget.EditableInputConnection.performEditorAction(EditableInputConnection.java:138)
        at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:297)
        at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)

提前感谢您的帮助。

事件为空。你需要检查一下,不要把getAction称为一个老问题,但是如果你仍然在寻找答案,下面的内容对我很有用。检查“输入”选项的部分,即

if (actionId == EditorInfo.IME_ACTION_SEARCH ||
                            actionId == EditorInfo.IME_ACTION_DONE ||
                            event.getAction().....
您需要添加更多搜索选项,即

if (actionId == EditorInfo.IME_ACTION_SEARCH ||
                            actionId == EditorInfo.IME_ACTION_DONE ||
                            actionId == EditorInfo.IME_ACTION_GO ||
                            actionId == EditorInfo.IME_ACTION_NEXT ||
                            event.getAction().....
我的键盘被设置为以IME_action_GO的形式执行默认操作,但为了更安全起见,我将其他选项保留在那里