首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当为onTextChanged时,对自定义AlertDialog按钮的引用返回null

是因为在onTextChanged方法中,AlertDialog的按钮还没有被创建或者还没有被初始化,所以尝试获取按钮的引用会返回null。

要解决这个问题,可以在AlertDialog的创建和初始化过程中获取按钮的引用,并将其保存在一个成员变量中。然后在onTextChanged方法中,可以直接使用保存的按钮引用进行操作。

以下是一个示例代码:

代码语言:txt
复制
// 创建AlertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("标题")
       .setMessage("消息");

// 初始化按钮并保存引用
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // 点击确定按钮的操作
    }
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // 点击取消按钮的操作
    }
});

AlertDialog alertDialog = builder.create();

// 在onTextChanged方法中使用保存的按钮引用
editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // 文本改变之前的操作
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // 文本改变时的操作
        Button positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
        Button negativeButton = alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE);

        // 使用按钮引用进行操作
        if (positiveButton != null && negativeButton != null) {
            // 对按钮进行操作
        }
    }

    @Override
    public void afterTextChanged(Editable s) {
        // 文本改变之后的操作
    }
});

在这个示例中,我们在AlertDialog的创建和初始化过程中获取了确定按钮和取消按钮的引用,并将其保存在positiveButton和negativeButton变量中。然后在onTextChanged方法中,我们可以直接使用这些保存的按钮引用进行操作。

请注意,这只是一个示例代码,具体的实现方式可能会根据具体的需求和使用的开发框架而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券