android开发中-使用Dialog prompt获取输入信息

 

prompt dialog是指弹出一个窗体提供输入框让用户可以输入数据,程序需要读取这些数据然后再进行后续处理。在Javascript中Window.prompt会弹出一个对话框让用户输入信息,然后程序就暂停在输入框这里,等到用户输入完成点击确定后,程序才接着执行,所以prompt dialog是同步的形式。但是在android中dialog都是异步的形式,那么怎么完成类似同步的效果呢?

这就需要用到回调了。(Ajax也是异步形式,所以也需要回调,回调帮我们解决了异步操作却达到同步效果的行为。)在Android中,我们也是通过AlertDialog来创建PromptDialog。我们要做一下几个步骤:

  1. 创建一个View对象,由View提供输入的控件和布局(一般我们通过LayoutInflater将xml布局文件转换成View对象)
  2. 创建一个Builder对象
  3. 将第一步创建的View对象设置到Builder中。
  4. 创建按钮和设置回调函数
  5. 根据之前配置的Builder生成Dialog对象
  6. 调用Dialog.show()将生成的Dialog显示出来

所以我们先创建xml布局文件,这个布局最终会放到Dialog中。prompt_view.xml:

 

然后将这个xml布局文件转换成View:

 

将View放到Builder中,设置按钮和回调函数,然后调用builder的create方法创建Dialog对象并将这个dialog显示出来。

 

这边我们设置回调方法由Activity代理处理,所以Activity需要implements DialogInterface.onClickListener:

 

然后为Activity添加未实现的onClick方法:

 

这边我们做的处理是:判断Dialog中被点击的是否是确定按钮,如果是则从dialog中查找提供输入的View控件(EditText),然后获取用户填写的内容用Toast显示出来。onClick方法会将当前被点击的Dialog当成第一个参数,然后点击的按钮id当成第二个参数调用回调函数,由于第一个参数的类型所有Dialog的基类接口DialogInterface所以需要强制转换成AlertDialog对象才可以将View查找出来,第二个参数按钮ID,则会有三种值,因为AlertDialog最多可以有3个按钮,Dialog类中提供了对于这3个按钮对应的静态变量值,所以可以通过将button id和这3个静态变量值比较来获得用户点击的是哪个按钮。

在Android中使用PromptDialog有个需要注意的地方是,因为Android中Dialog都是异步模式,所以你无法在将Dialog显示出来后马上就查找Dialog中的输入框,然后获取输入值,因为这时候用户才看到输入框并没有填入值,所以获取输入值,并进行后续处理必须写在回调方法里。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值