对话框的EditText监听器:在崩溃的setEnabled [英] dialog and edittext listener: crash at setEnabled
问题描述
您好,我要疯了,了解哪里是在此对话框的问题。我试图创建一个对话框,里面的的EditText
..如果的EditText
是空的正按钮
必须禁用其他启用。我写这篇code。
Hello I am going crazy to understand where is the problem in this dialog. I am trying to create one dialog with inside an edittext
.. If the edittext
is empty the positive button
must be disabled else enabled. I wrote this code.
public class Example extends AlertDialog {
AlertDialog.Builder builder;
EditText mEditText;
Context mContext;
Button button;
String text;
protected Example(Context context) {
super(context);
// TODO Auto-generated constructor stub
builder = new AlertDialog.Builder(context);
this.mContext = context;
mEditText = new EditText(mContext);
builder.setView(mEditText);
builder.setPositiveButton("Okay", null);
builder.setNegativeButton("No", null);
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
AlertDialog dialog = builder.create();
text = mEditText.getText().toString();
if(text.trim().length()>0) {
button = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
if(button != null)
button.setEnabled(true);
else
button = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
button.setEnabled(false);
}
else
button = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
button.setEnabled(false);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
builder.setTitle("Example Dialog");
builder.create();
builder.show();
}
}
当我执行此code和写在的EditText
的东西我得到 NullPointerException异常
在别的里面的如果在该行 button.setEnabled(假);
问题出在哪里。
When i execute this code and write something in edittext
i get NullPointerException
at the else inside the if at this line button.setEnabled(false);
Where is the problem?
推荐答案
@Happy_New_Year是正确的。你缺少{}中的其他部分。如果你不把{},则只有极下一条语句将被视为else部分。在 button.setEnabled(假);
是else块之外。因此,按钮
对象不被这里初始化。
@Happy_New_Year is right. You are missing {} in else parts. If you don't put {}, then the only very next statement would be considered as the else part. The button.setEnabled(false);
is outside of else block. So the button
object is not being initialized here.
这篇关于对话框的EditText监听器:在崩溃的setEnabled的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!