Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java onClickListener仅在按下软键盘后调用_Java_Android_Keyboard_Onclicklistener - Fatal编程技术网

Java onClickListener仅在按下软键盘后调用

Java onClickListener仅在按下软键盘后调用,java,android,keyboard,onclicklistener,Java,Android,Keyboard,Onclicklistener,我写了一个android应用程序 我设置了一个editText.setOnClickListener(…) 但我看到,当用户点击时,软键盘打开,只有 当用户单击键盘键时,调用onClick() 如何在打开软键盘之前捕捉点击 我想避免键盘打开 这是我的密码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView

我写了一个android应用程序

我设置了一个
editText.setOnClickListener(…)

但我看到,当用户点击时,软键盘打开,只有

当用户单击键盘键时,调用
onClick()

如何在打开软键盘之前捕捉点击

我想避免键盘打开

这是我的密码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.phone_login);
    initMembers();
    setOnClickListeners();
    initFieldsTexts();
    setKeyboardVisibilityListener();
}

private void setOnClickListeners() {

    mPhoneNumberField.setInputTextOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            setResult(RESULT_CANCELED);
            finish();
        }
    });

}
以及:

在调试期间,我看到这行被调用了两次

mPhoneNumberField.setInputExtonClickListener(新的OnClickListener(){


虽然只从onCreate调用它,并且
setOnClickListeners();
只调用一次

将onTouchListener设置为EditView。请记住返回true以避免事件传播。

您的意思是EditText不应获得焦点;它只需要响应单击事件。执行以下操作:

editText.setFocusableInTouchMode(false);
然后继续:

editText.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View view) {
       // Your code...
   }
}

所以你不想在单击edittext时键盘打开?我想将用户移动到另一个视图而不是其他视图。你可以发布你的代码以便更好地理解吗?顺便说一句,调试时,我看到设置onClickListener的代码执行了两次。虽然它只从“onCreate”调用了一次。为什么?不应该设置两次。如果您在Eclipse中调试,并且在设置onClickListener的位置和按Step Over(F6)时有一个断点你看,它让你保持一致,这没什么好担心的。它只是初始化新的onClick Listener,然后将其设置为你的EditText。我认为在Android Studio和InteliJ中的行为是相同的。另一方面,如果它真的在重写的onClick()中执行代码方法两次,则确实存在问题。您应该发布代码以获得更多帮助。您发布的代码没有问题。我不知道问题的确切原因。您没有指定是否意外调用重写的onClick方法。我的意思是,如果此代码块是在onCreate:setResult(RESULT\u cancelled);finish()中执行的;为什么在
public void onClick(View v)
中没有布尔返回?您能更好地解释这个传播问题吗?View.onTouch方法返回“如果侦听器已使用事件,则返回True,否则返回false”。在第二种情况下,事件将传播到视图层次结构,以便父视图可以自行处理事件。在您的情况下,您将在editText中使用事件,因此必须在onTouch方法中返回true。为什么在public void onClick(视图v)中没有布尔返回?
editText.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View view) {
       // Your code...
   }
}