Enter事件键仅在android studio中第二次响应
我想在用户按enter键时进行操作,但只按一次。我的问题是,只有当我按两次enter键时,才会发生上述操作。这是我的密码: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)
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;
}
});