我有一个editText,我已经设置了一个OnClickListener,它被设置为打开一个Dialog。但是我在Dialog中有一个选项让用户通过手动输入将数据输入editText。我尝试调用setOnClickListener(null)
,但它使editText无法响应。
到目前为止,我已经尝试了很多东西,但唯一有效的方法是通过调用recreate()重新创建活动,但我宁愿用户不知道我正在重新创建Activity。 如何重置editText以正常运行,就像Android editText一样? (比如打开键盘并在敲击时输入数据)
答案 0 :(得分:2)
更改
editText.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
//do as u wish
}
}
);
到
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
// do as you wish
}
}
});
答案 1 :(得分:0)
您可以使用布尔成员变量来跟踪何时允许用户输入以及何时显示对话框。
private boolean mShouldAllowInput = false;
然后在您的自定义点击监听器中,您可以执行以下操作:
private View.OnClickListener editClickListener = new View.OnClickLIstener() {
@Override
public void onClick(View v) {
if(!mShouldAllowInput) {
showDialog();
mShouldAllowInput = true;
}
}
}
现在您需要一种方法将布尔成员变量的值恢复回false
。您可以根据业务逻辑重置DialogInterface.OnClickListener
。
答案 2 :(得分:0)
要重置我尝试过的 EditText 的 OnClickListener:
View.OnClickListener defaultOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
v.requestFocus();
}
};
...
editText.setOnClickListener(defaultOnClickListener);
它似乎工作正常!