仅在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的所有问题。这只是姜饼中的一个问题。
答案 0 :(得分:0)
我解决了这个问题。 我还添加了一个onFocusChange监听器。因此,触摸侦听器基本上工作直到接受警报对话框(如果您拒绝警告对话框,则仍会启用触控侦听器。)。接受时,我通过返回false来禁用触摸侦听器,并启用焦点更改侦听器。