对话框的EditText监听器:在崩溃的setEnabled [英] dialog and edittext listener: crash at setEnabled

查看:244
本文介绍了对话框的EditText监听器:在崩溃的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆