Enter事件键仅在android studio中第二次响应

Enter事件键仅在android studio中第二次响应,android,android-studio,Android,Android Studio,我想在用户按enter键时进行操作,但只按一次。我的问题是,只有当我按两次enter键时,才会发生上述操作。这是我的密码: EditText spin3 = findViewById(R.id.spinner2); spin3.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event)

我想在用户按enter键时进行操作,但只按一次。我的问题是,只有当我按两次enter键时,才会发生上述操作。这是我的密码:

EditText spin3 = findViewById(R.id.spinner2);
    spin3.setOnKeyListener(new View.OnKeyListener()
    {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {

                if((keyCode==KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN))
                {
                        loader.setVisibility(View.VISIBLE);
                        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
                        try {
                            authenticate3();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        } catch (UnsupportedEncodingException e) {
                            e.printStackTrace();
                        }
                        return true;

                }

            return false;
        }
    });
我的editText的XML代码

 <EditText
            android:id="@+id/spinner2"
            android:layout_width="331dp"
            android:layout_height="43dp"
            android:layout_marginTop="8dp"
            android:hint="numero de facture"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.397"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/editText3" />

我尝试了您的代码,之后立即创建了警报对话框

if((keyCode==KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN))
{  
     getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
    (alert dialog call) ...

只需输入1次即可调用该对话框。所以这个方法是有效的

显然,在一些搜索之后,这类问题在stackoverflow上被问了好几次

关于和,您可能在输入和下降条件中返回true,这意味着进一步的事件检测(上升和移动)

因此,要使其停止,请返回false。但是,如果这不起作用,请检查authenticate3()方法

我删除了getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE)行,但它不起作用
EditText spin3 = findViewById(R.id.spinner2);
    spin3.setOnKeyListener(new View.OnKeyListener()
    {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {

                if((keyCode==KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN))
                {
                        loader.setVisibility(View.VISIBLE);
                        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
                        try {
                            authenticate3();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        } catch (UnsupportedEncodingException e) {
                            e.printStackTrace();
                        }
                        return false;

                }

            return false;
        }
    });