ClearFocus返回true并触发onFocusChange

时间:2015-08-19 00:37:23

标签: android android-edittext android-view android-alertdialog android-2.3-gingerbread

仅在ICS以下的版本中出现此问题。我有两个EditTexts(用户名和密码)。最初两个焦点都是错误的。点击其中任何一个我首先调用AlertDialog。 Onclick的负按钮我清晰地聚焦了EditTexts。当我清除第二个(密码)textField的焦点时,第一个自动重置为true。

 private void disclaimerDialog() {
        dlgAlert = new AlertDialog.Builder(getActivity());
        dlgAlert.setTitle(R.string.testApp);
        dlgAlert.setCancelable(false);

        dlgAlert.setPositiveButton("Accept", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                mDisclaimerAccepted = true;
            }
        });

        dlgAlert.setNegativeButton("Decline", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                hideKeyboard();
                userNameEditText.clearFocus();
                passwordEditText.clearFocus();

            }
        });

        dlgAlert.show();
    }



userNameEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            onFocusChange(View v, boolean hasFocus) {
                if (!mDisclaimerAccepted && hasFocus) {
                    if (tempFileData != null) {
                        disclaimerDialog((EditText) view);
                    } else {
                        Toast.makeText(getActivity(), "You haven't accepted the disclaimer. Please check your internet connection", Toast.LENGTH_LONG).show();
                    }
                } 
            }
        });
passwordEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            onFocusChange(View v, boolean hasFocus) {
                if (!mDisclaimerAccepted && hasFocus) {
                    if (tempFileData != null) {
                        disclaimerDialog((EditText) view);
                    } else {
                        Toast.makeText(getActivity(), "You haven't accepted the disclaimer. Please check your internet connection", Toast.LENGTH_LONG).show();
                    }
                } 
            }
        });

当我调用passwordEditText.ClearFocus()时,它会在onFocusChange上为userNameEditText返回true。但反之亦然。

我已尝试过每个博客以及有关stackoverflow的所有问题。这只是姜饼中的一个问题。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。 我还添加了一个onFocusChange监听器。因此,触摸侦听器基本上工作直到接受警报对话框(如果您拒绝警告对话框,则仍会启用触控侦听器。)。接受时,我通过返回false来禁用触摸侦听器,并启用焦点更改侦听器。