首页
学习
活动
专区
工具
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方法中,我们可以直接使用这些保存的按钮引用进行操作。

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

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

相关·内容

Android开发笔记(一)

将界面始终保持横屏或竖屏 比如说我们在使用一些社交平台APP,如果某些界面会自动旋转,一定程度上会使用户体验变得糟糕,因此不如固定其界面始终横屏/竖屏,如以下代码便是将界面始终保持竖屏: setRequestedOrientation...(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 自定义退出确认框 我们在使用返回手势或返回,许多应用会弹出来一个对话框询问你是否要退出,这一部分内容可以通过以下代码实现...代码中使用了AlertDialog,setMessage要显示字符串,通常在string.xml文件中进行了定义(便于国际化),setIcon则是用来放图标,NegativeButton和PositiveButton...你可以只当作两个按钮来用,根据你设置它们显示文字分别在OnClick中配置对应功能即可。...终止一个Activity 如果我们程序中有返回上一层这种按钮,我们要真正实现返回上一层,而不是新打开一个Activity,则应在点击事件中使用finish();来关闭当前Activity,如以下代码所示

31430

android dialog用法

每一个按钮,使用set...Button()方法,该方法接受按钮名称和一个DialogInterface.OnClickListener,该监听器定义了当用户选择该按钮应做动作。   ...注意:每种按钮类型,只能为AlertDialog创建一个。也就是说,一个AlertDialog不能有两个以上"positive"按钮。这使得可能按钮数量最多为三个:肯定、否定、中性。...这样,每个对话框继承这个Activity特定属性。比如,一个对话框打开,菜单键显示这个Activity定义选项菜单,音量键修改Activity使用音频流。...这是一个表明对话框被用户显示取消特殊情况。这将在用户按“返回按钮发生,或者这个对话框显示调用cancel() (也许通过对话框上一个“取消”按钮)。...然后,开始函数链并设置该对话框不能取消not cancelable (因此用户不能使用返回按钮关闭这个对话框)。

1.4K30
  • Android AlertDialog修改标题、内容、按钮字体大小和字体颜色

    “字体要大、颜色要鲜艳”,这话听着熟悉吧,在日常开发中,往往因为业务不同、受众群体特殊,可能需要我们做出特殊处理。 今天是原生AlertDialog做一些大小和颜色修改。...有两种方案: 1、自定义contentView,大小颜色什么直接在xml文件中写好就ok。 2、在原生基础上做一些修改。...这时候点开AlertDialog查看源码,构造方法以下就是get set 方法了,可以看到一个getButton方法 这里返回是一个button,看注释,可以返回 “确定取消” 按钮,那既然得到...ok,继续往下看,可以看到一个重写setTitle方法, 注意这里是引用一个mAlert对象,且调用它setTitle方法,ok,点进去这个setTitle方法查看究竟。...("取消", null) .show(); /修改 确定取消 按钮字体大小 builder.getButton

    4.4K30

    信息提醒之对话框(AlertDialog + ProgressDialog)-更新中

    使用show()方法显示对话框是异步,也就是说,调用AlertDialog.Builder.show 或者AlertDialog.show方法显示对话框后,show方法会立即返回,并且继续执行后面的代码...,该参数不能设置null,否则默认被选中列表项无法置成未选中状态。...由于存在“确定”按钮单击事件中需要引用AlertDialog变量,因此先使用create方法返回AlertDialog对象,然后在单击事件中使用该变量 ---- 进度对话框 查看大拿总结 进度对话框通过...因此本案例单独使用了一个progress变量来代替当前进度,进度条风格是圆形,就意味着对话框永远不会被关闭。...定义如下 protected Dialog onCreateDialog(int id) 调用Activity.showDialog方法,系统会调用onCreateDialog方法来返回一个Dialog

    4.4K10

    IDEA Web渲染插件开发(二)— 自定义JsDialog

    《IDEA Web渲染插件开发(一)》中,我们了解到了如何编写一款用于显示网页插件,所需要核心知识点就是IDEA插件开发和JCEF,在本文中,我们将继续插件开发,该插件JS Dialog显示进行自定义处理...设置suppress_messagefalse并且返回false来使用默认实现(默认实现将会立刻展示一个模态对话框并抑制任何额外对话框请求直到当前展示对话框已经销毁)。...如果应用程序想要使用一个自定义对话框或是回调callback已经立刻被执行了,则返回true。自定义对话框可以是模态或是非模态。...createCenterPanel返回一个空白JLabel,因为此时this.content还是null。 进行this.content = content赋值操作。...Dialog按钮自定义(重写createActions) IDEA插件DialogWrapper默认情况下是Cancel+OK按钮组合。那么如何自定义我们按钮呢?

    71510

    Android去除AlertDialog按钮分隔线

    在网上学习了一种继承系统AlertDialog然后用一统一方法控制dialog显示方法,效果还不错,但按钮栏那里分隔线并不是想要。...dividerVertical引用。...:在Linearlayout结尾处显示分隔线; middle:在LinearLayout中每两个组件间显示分隔线; 所以如果不想按钮栏带有分隔线就可以创建自己按钮栏样式并继承”Holo.Light.ButtonBar.AlertDialog...name="android:showDividers" none</item </style 然后将自定义样式加入自定义alert_dialog主题中,这样divider就不会再显示了。...例如,如果是垂直divider,则这一padding就是divider距离按钮栏上下边界距离。 ? dividerPadding.png 以上就是本文全部内容,希望大家学习有所帮助。

    1K30

    Android开发必知--几种不同对话框实现

    在开发过程中,与用户交互式免不了会用到对话框以实现更好用户体验,所以掌握几种对话框实现方法还是非常有必要。在看具体实例之前先AlertDialog做一个简单介绍。...AlertDialog是功能最丰富、实践应用最广对话框,它可以生成各种内容对话框。但实际上AlertDialog生成对话框总体可分为以下4个区域:图标区、标题区、内容区、按钮区。...·setAdapter():设置对话框内容自定义列表项。   ·setView():设置对话框内容自定义View。 下面通过几个实例来介绍一下AlertDialog用法。...6、自定义View对话框 ?...代码中首先显示装载了login_dialog.xml文件,并返回该文件对应View,接下来程序调用了setView()方法来显示View。

    2.3K10

    Android开源库:手把手教你实现一个简单好用搜索框(含历史搜索记录)

    宽高=固有宽高(自动通过getIntrinsicWidth()& getIntrinsicHeight()获取) // 注2:若不想在某个地方显示,则设置null /...* 监听方法:onTextChanged() & onFocusChanged() * 调用时刻:输入框内容变化时 & 焦点发生变化时 */ @Override...clearDrawable : null, null); } /** * 步骤4:删除图标区域设置点击事件,即"点击 = 清空搜索框内容" * 原理:手指抬起位置在删除图标的区域...& 数据库中有搜索记录,显示 "删除搜索记录"按钮 if (tempName.equals("") && cursor.getCount() !...输入框空 & 数据库中有搜索记录,才显示 "删除搜索记录"按钮 if (tempName.equals("") && cursor.getCount() !

    2.8K10

    错误操作怎么办?用他让你不再害怕!—Dialog最详解

    简介 Dialog组件并非继承自 View,而是继承自 Object, Dialog生命周期通常会由 Activity来控制, Activity被销毁后,如果再有 Dialog操作会导致异常:java.lang.IllegalArgumentException...-3个按钮,可以有单选或者复选框对话框,可以创建大多数界面 - ProgressDialog 进度条对话框,显示一个进度或者进度条,继承自AlertDialog - DatePickerDialog...普通弹框 public void showDialog(View v) { // 这里属性可以一直设置,因为每次设置后返回是一个builder对象 AlertDialog.Builder...dialog.show(); } 自定义布局弹框 可以通过创建一个自定义布局,然后调用 AlertDialog.Builder对象上 setView()方法将其添加到 AlertDialog...onCreateDialog()方法中加载自定义布局文件,并添加到 AlertDialog.Builder中,在按钮点击事件中获取用户名和密码 public class LoginDialogFragment

    1.4K20

    读完《Effective Java》后我淦了 50 条开发技巧

    ); } // 带标题警告框,有确定按钮,取消按钮 public AlertDialog(int width, int height, String title, String...(超类protected,子类覆盖后不能改为default)。 成员变量决不允许是公有的。一旦设置公有,则放弃了他处理能力。这种类并不是线程安全。即使是final,也不允许。...0长度数组或者集合,而不是null null一般用于表示没有被初始化或处理,如果方法返回null,则需要在上层做更多处理,以防止NPE。...44、所有导出API元素编写文档注释 正确javadoc文档,需要每个被导出类、接口、构造器、方法和域之前增加文档注释。注释应该是实现透明,只需要简洁描述它和客户端之间约定。...程序编写得足够低耦合后,通过工具发现了性能瓶颈代码块,才可以保证修改不影响任何外部环境。

    63630

    Android编程自定义AlertDialog样式方法详解

    本文实例讲述了Android编程自定义AlertDialog样式方法。...分享给大家供大家参考,具体如下: 开发时候,通常我们要自定义AlertDialog来满足我们功能需求: 比如弹出对话框中可以输入信息,或者要展示且有选择功能列表,或者要实现特定UI风格等。...方法一:完全自定义AlertDialoglayout.如我们要实现有输入框AlertDialog布局custom_dialog.xml: <?.../Theme.Dialog" <item name="android:windowFrame" @null</item //DialogwindowFrame框无 <item...,1,界面除了我们dialog内容是高亮显示,dialog以外区域是黑色,完全看不到其他内容 <item name="android:backgroundDimEnabled"

    3.5K20

    Java中不可或缺50个小技巧,好用!

    );     }     // 带标题警告框,有确定按钮,取消按钮     public AlertDialog(int width, int height, String title, String...(超类protected,子类覆盖后不能改为default)。 成员变量决不允许是公有的。一旦设置公有,则放弃了他处理能力。这种类并不是线程安全。即使是final,也不允许。...{ NAVEL, TEMPLE, BLOOD } 枚举型在java中非常强大,需要一组固定常量,使用enum比int好很多。...0长度数组或者集合,而不是null null一般用于表示没有被初始化或处理,如果方法返回null,则需要在上层做更多处理,以防止NPE。...43、所有导出API元素编写文档注释 正确javadoc文档,需要每个被导出类、接口、构造器、方法和域之前增加文档注释。注释应该是实现透明,只需要简洁描述它和客户端之间约定。

    56000

    读完《Effective Java》: 我整理这 50 条技巧

    ); } // 带标题警告框,有确定按钮,取消按钮 public AlertDialog(int width, int height, String title, String...(超类protected,子类覆盖后不能改为default)。 成员变量决不允许是公有的。一旦设置公有,则放弃了他处理能力。这种类并不是线程安全。即使是final,也不允许。...0长度数组或者集合,而不是null null一般用于表示没有被初始化或处理,如果方法返回null,则需要在上层做更多处理,以防止NPE。...44、所有导出API元素编写文档注释 正确javadoc文档,需要每个被导出类、接口、构造器、方法和域之前增加文档注释。注释应该是实现透明,只需要简洁描述它和客户端之间约定。...程序编写得足够低耦合后,通过工具发现了性能瓶颈代码块,才可以保证修改不影响任何外部环境。

    50120

    Android八种对话框实现代码示例

    1.写在前面 Android提供了丰富 Dialog 函数,本文介绍最常用8种对话框使用方法,包括普通(包含提示消息和按钮)、列表、单选、多选、等待、进度条、编辑、自定义等多种形式,将在第2部分介绍...有时,我们希望在对话框创建或关闭完成一些特定功能,这需要复写 Dialogcreate()、show()、dismiss()等方法,将在第3部分介绍。 2.代码示例 ?.../* @setNeutralButton 设置中间按钮 * 若只需一个按钮,仅设置 setPositiveButton 即可 */ private void showMultiBtnDialog...R.layout.dialog_customize * 由于dialog_customize.xml只放置了一个EditView,因此和图8一样 * dialog_customize.xml可自定义更复杂...,希望大家学习有所帮助。

    1.2K41

    Java接地气日常编码技巧

    ); } // 带标题警告框,有确定按钮,取消按钮 public AlertDialog(int width, int height, String title, String...(超类protected,子类覆盖后不能改为default)。 成员变量决不允许是公有的。一旦设置公有,则放弃了他处理能力。这种类并不是线程安全。即使是final,也不允许。...0长度数组或者集合,而不是null null一般用于表示没有被初始化或处理,如果方法返回null,则需要在上层做更多处理,以防止NPE。...44、所有导出API元素编写文档注释 正确javadoc文档,需要每个被导出类、接口、构造器、方法和域之前增加文档注释。注释应该是实现透明,只需要简洁描述它和客户端之间约定。...程序编写得足够低耦合后,通过工具发现了性能瓶颈代码块,才可以保证修改不影响任何外部环境。

    63630

    笔记22 | 学习整理开源APP(BaseAnimation)程序源码“中通讯录效果(三)

    ---- 3.目录 3.1 A-Z字母索引 3.2 联系人界面ListView数据填充 3.3 联系人搜索 3.1 A-Z字母索引 通过自定义一个View界面,绘制一个A-Z竖向排列布局,通过触摸事件监听...21 | 学习整理开源APP(BaseAnimation)程序源码“中通讯录效果(二) ---- 3.3 联系人搜索 搜索部分难点是拿出搜索内容,首先自定义了ClearEditText,给出了一个...(CharSequence s, int start, int before, int count) { //输入框里面的值空,更新原来列表,否则为过滤数据列表...ClearEditText extends EditText implements OnFocusChangeListener, TextWatcher { /** * 删除按钮引用...()[1], right, getCompoundDrawables()[3]); } /** * 输入框里面内容发生变化时候回调方法 */ @Override

    66140

    8.广播

    即便广播接收者所在进程已经被关闭,系统发出广播中action跟该广播接收者action匹配,系统会启动该广播接收者所在进程, 并把广播发给该广播接收者 广播俩种注册方法 广播方式一般有两种...,系统发送广播可以被该接收者接收,系统会自动启动该接收者所在进程 案例2:短信拦截器 系统收到短信时会产生一条广播,广播中包含了短信号码和内容 系统发送短信广播,是怎么把短信内容存入广播...中代码按钮点击事件里面发送了一条广播 7.创建一个广播接收器了,新建ForceOfflineReceiver 8.AndroidManifest.xml文件进行配置:声明权限、LoginActivity...这是第6步//在按钮点击事件里面发送了一条广播,广播com.example.broadcastbestpractice.FORCE_OFFLINE,这条广播就是用于通知程序强制用户下线。...然后使用setPositiveButton()方法来给对话框注册确定按钮,当用户点击了确定按钮, 就调用ActivityCollectorfinishAll()方法来销毁掉所有活动,并重新启动LoginActivity

    1.6K100

    Android小程序实现音乐播放列表

    int newVersion) { } } (2)创建添加音乐AddActivity,添加界面提供两个文本框和一个按钮,用于输入音乐名和歌手名,单击“添加”按钮,将数据插入到表中,具体代码如下:...“添加”按钮,先将用户输入音乐名和歌手信息封装到ContentValues对象中,再调用DBHelperinsert()方法将记录插入到数据库中,然后跳转到QueryActivity来显示音乐列表...builder.create(); ad.show(); } }); helpter.close(); } } 上述代码中调用DBHelperquery()方法查询数据库并返回一个...Cursor游标,然后使用SimpleCursorAdapter适配器将数据绑定到ListView控件上,并在ListView控件上注册单击监听器,单击一条记录,显示一个警告对话框提示是否删除,单击...更多关于播放器内容请点击《java播放器功能》进行学习。 以上就是本文全部内容,希望大家学习有所帮助。

    1.3K41

    Android开发笔记(二十三)文件对话框FileDialog

    其中最常用AlertDialog,而且需要自定义对话框时候,多半也是在AlertDialog.Builder基础上集成其他控件,具体参见《Android开发笔记(六十六)自定义对话框》。...上文字也是英文,而且还无法设置中文;另一个原因是这两个对话框布局和风格无法自定义,如果想加上别的提示信息,就得自己重写代码了。...接着创建一个AlertDialog.Builder对象,在该Builder对象中嵌入布局视图,并设置标题、确定按钮、取消按钮。...要想实现一个更加完善对话框,需要在自定义对话框继承DialogFragment类。下面用一个简单提示对话框进行说明,该对话框主要是显示一段文字,然后由用户选择“确定”或者“取消”。...onCreateDialog方法后面当然要依例添加AlertDialog.Builder对象,依次设置标题、内容、图标、确定按钮、取消按钮等元素,其中确定按钮点击事件需要调用回调接口处理方法。

    3.3K30

    Android之AlertDialog基本使用

    坦白说,AlertDialog我在工作中用得并不多,因为AlertDialog样式比较固定和呆板,为了和App整体设计匹配,一般都是使用自定义Dialog,只有在要求不高用一下。...创建构造器AlertDialog.Builder对象; 通过构造器对象调用setTitle、setMessage等方法构造对话框标题、信息和图标等内容; 根据需要,设置正面按钮、负面按钮和中立按钮...:点击对话框以外区域是否让对话框消失,默认为true; setPositiveButton:设置正面按钮,表示“积极”、“确认”意思,第一个参数按钮上显示文字,下同; setNegativeButton...:设置反面按钮,表示“消极”、“否认”、“取消”意思; setNeutralButton:设置中立按钮; setOnShowListener:对话框显示触发事件; setOnCancelListener...例子中保存选中item方法有问题Activity被销毁之后重新创建的话数据就会丢失,要想持久化保存的话要用sharedpreferences或者数据库。

    1.5K20
    领券