edittext 监听无效_对话框的EditText监听器:在崩溃的setEnabled

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();

}

}

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 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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值