android 开发AlertDialog.builder对话框的实现
AndroidAPI提供了Dialog对话框控件,但google明确指出不建议开发者只是使用Dialog来创建对话框,而应该自定义对话框或者使用API中提供的Dialog的子类,如AlertDialog。接下来记录下AlertDialog的具体使用,供广大初学者学习,也供自己日后查阅。
首先在资源文件xml中写入一个按钮。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <RelativeLayout xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http://schemas.android.com/tools" android:layout_width= "match_parent" android:layout_height= "match_parent" android:paddingBottom= "@dimen/activity_vertical_margin" android:paddingLeft= "@dimen/activity_horizontal_margin" android:paddingRight= "@dimen/activity_horizontal_margin" android:paddingTop= "@dimen/activity_vertical_margin" tools:context= ".MainActivity" > <Button android:id= "@+id/button1" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:layout_centerHorizontal= "true" android:layout_centerVertical= "true" android:text= "警告对话框" /> <Button android:id= "@+id/button2" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:layout_alignLeft= "@+id/button1" android:layout_alignRight= "@+id/button1" android:layout_below= "@+id/button1" android:layout_marginTop= "17dp" android:text= "选择" /> <Button android:id= "@+id/button3" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:layout_alignLeft= "@+id/button2" android:layout_alignRight= "@+id/button2" android:layout_below= "@+id/button2" android:layout_marginTop= "23dp" android:text= "单选对话框" /> </RelativeLayout> |
- 创建简单提示窗口
在activity中,声明全局变量AlertDialog窗口对象建造者AlertDialog.Builder builder,并在onCreate方法中实例化这个窗口对象建造者new AlertDialog.Builder(this)。
API对该对象提供了相当丰富的方法。
如:builder.setTitile("设置窗口标题");
bulder.setMessage("设置窗口内容");
builder.setIcon("设置窗口图标");
......
为窗口创建建造者注册相关按钮:
“取消”,“确定”,“忽略”等相关按钮,由于是学习当中,按钮的监听事件只是做了简单的吐司处理,在正常开发中是要进行业务逻辑处理的。
1 //通过窗口对象建造者注册“确定”按钮,通过DialogInterface接口注册点击事件 2 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { 3 4 @Override 5 public void onClick(DialogInterface dialog, int which) { 6 // TODO Auto-generated method stub 7 //完成业务逻辑代码的编写 8 Toast.makeText(MainActivity.this, "确定删除!", 1).show(); 9 } 10 }); 11 //通过窗口对象建造者注册“取消”按钮,通过DialogInterface接口注册点击事件 12 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { 13 @Override 14 public void onClick(DialogInterface dialog, int which) { 15 // TODO Auto-generated method stub 16 Toast.makeText(MainActivity.this, "取消操作!", 1).show(); 17 } 18 }); 19 //通过窗口对象建造者注册“忽略”按钮,通过DialogInterface接口注册点击事件 20 builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() { 21 @Override 22 public void onClick(DialogInterface dialog, int which) { 23 // TODO Auto-generated method stub 24 Toast.makeText(MainActivity.this, "忽略操作!", 1).show(); 25 } 26 }); 27 button.setOnClickListener(new OnClickListener() { 28 @Override 29 public void onClick(View view) { 30 // TODO Auto-generated method stub 31 // Toast.makeText(MainActivity.this, "谁让你点击的?逗", 1).show(); 32 //窗口构建完毕后,展示窗口 33 builder.show(); 34 } 35 });
- 创建多选窗口
通过按钮注册点击事件,在点击事件中,初始化并实例化窗口对象创建者:AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 之后的操作创建简单对话框基本一致。
1 button2.setOnClickListener(new OnClickListener() { 2 @Override 3 public void onClick(View v) { 4 // TODO Auto-generated method stub 5 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 6 builder.setTitle("选择爱好"); 7 final String[] hobby = {"上网","聊天","打游戏"} ; 8 builder.setMultiChoiceItems(hobby, new boolean[]{true,false,true}, new DialogInterface.OnMultiChoiceClickListener() { 9 @Override 10 public void onClick(DialogInterface dialog, int which, boolean isChecked) { 11 // TODO Auto-generated method stub 12 if(isChecked){ 13 Toast.makeText(MainActivity.this, "选择---->"+hobby[which], 1).show(); 14 }else{ 15 Toast.makeText(MainActivity.this, "取消---->"+hobby[which], 1).show(); 16 } 17 } 18 }); 19 builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { 20 @Override 21 public void onClick(DialogInterface dialog, int which) { 22 // TODO Auto-generated method stub 23 } 24 }); 25 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { 26 @Override 27 public void onClick(DialogInterface dialog, int which) { 28 // TODO Auto-generated method stub 29 } 30 }); 31 //窗口构建完毕后,展示窗口 32 builder.show(); 33 } 34 });
- 创建单选窗口
通过按钮注册点击事件,在点击事件中,初始化并实例化窗口对象创建者:AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 之后的操作跟创建多选窗口基本一致。
1 button3.setOnClickListener(new OnClickListener() { 2 @Override 3 public void onClick(View v) { 4 // TODO Auto-generated method stub 5 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 6 builder.setTitle("选择爱好"); 7 final String[] hobby = {"上网","聊天","打游戏"} ; 8 //窗口对象创建者可以放adapter容器 9 // builder.setAdapter(adapter, listener); 10 //为窗口对象建造者创建供选择的列表,若未选择任何一项,参数是 : -1 11 builder.setSingleChoiceItems(new String[]{"上网","聊天","打游戏"}, 12 -1,new DialogInterface.OnClickListener() { 13 @Override 14 public void onClick(DialogInterface dialog, int which) { 15 Toast.makeText(MainActivity.this, "您选择了--》"+hobby[which], 1).show(); 16 } 17 }); 18 //通过窗口对象建造者注册“确定”按钮,通过DialogInterface接口注册点击事件 19 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { 20 @Override 21 public void onClick(DialogInterface dialog, int which) { 22 23 } 24 }); 25 //通过窗口对象建造者注册“忽略”按钮,通过DialogInterface接口注册点击事件 26 builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() { 27 @Override 28 public void onClick(DialogInterface dialog, int which) { 29 30 } 31 }); 32 //通过窗口对象建造者注册“取消”按钮,通过DialogInterface接口注册点击事件 33 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { 34 @Override 35 public void onClick(DialogInterface dialog, int which) { 36 37 } 38 }); 39 //窗口完毕后,对窗口进行展示 40 builder.show(); 41 } 42 });
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步