wangleyiang 发表于 2013-1-30 04:05:27

Android 创建AlertDislog时要小心哦

        在Android开发中,会经常用到AlertDialog,创建的方法有很多种方式,下面从Builder直接显示来说明一些有趣的事情,下面的代码想显示一个单选AlertDialog:
Builder builder = new AlertDialog.Builder(this);builder.setTitle("标题");builder.setMessage("内容");builder.setSingleChoiceItems(new String[]{"选项 A", "选项 B", "选项 C", "选项 D"}, 0, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Log.i(getClass().getName(), "{witch = " + which + "}");}});builder.show(); 运行后的如图:

http://dl.iteye.com/upload/attachment/0075/7922/5f2c3ec9-0670-34bc-91c8-e8a6c4075d84.png
 
         产生这个问题的表面原因是setMessage和setSingleChoiceItems都被调用了,而根本原因只要参照其AlertDialog$Builder的源码就可以找到!
单独调用后的效果一切就正常了,效果如下:

http://dl.iteye.com/upload/attachment/0075/7926/fb2dc2cc-4973-32f2-b1bc-3c856bc181dd.png

http://dl.iteye.com/upload/attachment/0075/7928/7782a297-9f57-3453-8455-c9b361ad67bd.png
 
 如果通过Builder获得AlertDialog引用,然后对AlertDialog再做一些显示操作,还会发现一些有趣的效果!:)
页: [1]
查看完整版本: Android 创建AlertDislog时要小心哦