AlertDialog的实现

课程Demo
重点解析自定义对话框
public class MainActivity extends AppCompatActivity {
private Button bt1;
private Button bt2;
private Button bt3;
private Button bt4;
private Button bt5;
private Button testbt;
private EditText edit;
private TextView text1;
private String singleitem[]={"男","女","人妖"};
private String moreitem[]={"杨幂","刘诗诗","宋茜","古力娜扎"};
private String listitem[]={"杨幂","刘诗诗","宋茜","古力娜扎"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1= (Button) findViewById(R.id.bt1);
bt2= (Button) findViewById(R.id.bt2);
bt3= (Button) findViewById(R.id.bt3);
bt4= (Button) findViewById(R.id.bt4);
bt5= (Button) findViewById(R.id.bt5);
showDialog1();
showDialog2();
showDialog3();
showDialog4();
showDialog5();
}
//普通对话框的实现
private void showDialog1() {
bt1.setOnClickListener(new View.OnClickListener() {
AlertDialog.Builder build=new AlertDialog.Builder(MainActivity.this);
@Override
public void onClick(View v) {
build.setTitle("确认对话框");
build.setIcon(R.drawable.she);
build.setMessage("是否确定你的选择");
build.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"点击了确定按钮",Toast.LENGTH_SHORT).show();
}
});
build.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"点击了取消按钮",Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
AlertDialog dialog=build.create();
dialog.show();
}
});
}
//单选对话框的实现
private void showDialog2() {
bt2.setOnClickListener(new View.OnClickListener() {
AlertDialog.Builder build=new AlertDialog.Builder(MainActivity.this);
@Override
public void onClick(View v) {
build.setIcon(R.drawable.she);
build.setTitle("你的性别是:");
//singleitem:存放数据的数据名 0:默认选择第一个
build.setSingleChoiceItems(singleitem, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"你的性别为"+singleitem[which],Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog=build.create();
dialog.show();
}
});
}
//多选对话框的实现
private void showDialog3() {
bt3.setOnClickListener(new View.OnClickListener() {
AlertDialog.Builder build = new AlertDialog.Builder(MainActivity.this);
@Override
public void onClick(View v) {
build.setTitle("多选对话框");
build.setIcon(R.drawable.she);
build.setTitle("你喜欢的人是:");
build.setMultiChoiceItems(moreitem, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
Toast.makeText(MainActivity.this, "你喜欢:" + moreitem[which], Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(MainActivity.this, "你不喜欢:" + moreitem[which], Toast.LENGTH_SHORT).show();
}
}
});
AlertDialog dialog = build.create();
dialog.show();
}
});
}
//列表对话框的实现
private void showDialog4() {
bt4.setOnClickListener(new View.OnClickListener() {
AlertDialog.Builder build = new AlertDialog.Builder(MainActivity.this);
@Override
public void onClick(View v) {
build.setIcon(R.drawable.she);
build.setTitle("你喜欢的人是:");
build.setItems(listitem, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "我更喜欢:" +listitem[which], Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog = build.create();
dialog.show();
}
});
}
//自定义对话框的实现
private void showDialog5() {
bt5.setOnClickListener(new View.OnClickListener() {
AlertDialog.Builder build = new AlertDialog.Builder(MainActivity.this);
@Override
public void onClick(View v) {
//设置对话框标题
build.settitle("测试你们的缘分");
//设置对话框图标
build.setIcon(R.drawable.she);
//创建视图
LayoutInflater inflate=LayoutInflater.from(MainActivity.this);
final View view=inflate.inflate(R.layout.view,null);
// 加载视图
build.setView(view);
testbt= (Button) view.findViewById(R.id.testbt);
//创建对话框
AlertDialog dialog = build.create();
testbt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
//想获取对话框中的EditText的值,必须在初始化的时候加所在View对象view 的findViewById方法
edit=(EditText) view.findViewById(R.id.edit);
text1=(TextView)view.findViewById(R.id.text1);
text1.setText("你与"+edit.getText()+"有三生三世十里桃花的缘分");
}
});
build.setPositiveButton("退出", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"退出对话框",Toast.LENGTH_SHORT).show();
//退出对话框
dialog.dismiss();
}
});
//展示对话框
dialog.show();
}
});
}
}
附view.xml配置文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请输入你喜欢的人"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edit"/>
<Button
android:text="测试缘分"
android:id="@+id/testbt"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/she"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text1"
android:hint="即将揭晓你和她的缘分"/>
</LinearLayout>
AlertDialog的实现的更多相关文章
- Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder
Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder 转自:ht ...
- Android中的AlertDialog使用示例五(自定义对话框)
在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...
- android 弹出AlertDialog的学习案例
我在编写的时候,测试的关键代码: AlertDialog.Builder builder=new AlertDialog.Builder(MainPointListActivity.this); bu ...
- The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder is not applicable for the arguments
The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder i ...
- setView的AlertDialog在受到二次点击后出错
错误报告: 10-21 13:11:16.009: E/AndroidRuntime(27937): FATAL EXCEPTION: main10-21 13:11:16.009: E/Androi ...
- 关于AlertDialog.Builder(Context context)中所应传入的context
错误报告: 10-20 14:34:46.565: E/AndroidRuntime(23098): FATAL EXCEPTION: main10-20 14:34:46.565: E/Androi ...
- 安卓 自定义AlertDialog对话框(加载提示框)
AlertDialog有以下六种使用方法: 一.简单的AlertDialog(只显示一段简单的信息) 二.带按钮的AlertDialog(显示提示信息,让用户操作) 三.类似ListView的Aler ...
- Android AlertDialog去除黑边白边自定义布局(转)
LayoutInflater inflater = this.getLayoutInflater(); View view = inflater.inflate(R.layout.test_alert ...
- Android开发2:事件处理及实现简单的对话框(Toast,AlertDialog,Snackbar,TextInputLayout的使用)
前言 啦啦啦~又要和大家一起学习Android开发啦,博主心里好激动哒~ 在上篇博文中,我们通过线性布局和基础组件的使用,完成了一个简单的学生课外体育积分电子认证系统的界面,本篇博文,将和大家一起熟悉 ...
- Android中的AlertDialog使用示例四(多项选择确定对话框)
在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...
随机推荐
- Windows下安装MySQL5.6绿色版
建议安装MySQL绿色版的,什么是绿色版的?就是免安装,下载下来的截图是这样的 在该目录下创建一个文件夹/data用于存放数据, 新建一个my.ini文件,my.ini里面最基本的配置如下,my.in ...
- 为Html.EditorForModel自定义模版
对于MVC视图渲染来说,大家应该不会陌生,但对于模型的渲染,不知道是否听说过,主要是说Model通过它属性的相关特性(DataType,UIHint)来将它们自动渲染到View上,这是一个比较不错的技 ...
- iOS7获取UUID以及转换MD5
近期项目开发,运用到要获取UUID转MD5,可是iOS7不能使用获取的UDID的接口(涉及到隐私),获取MAC地址的方式的接口在iOS7下也废弃了.眼下可能的就是获取UUID了,可是在iOS7下,UU ...
- 2016/3/27 PHP中include和require的区别详解
1.概要 require()语句的性能与include()相类似,都是包括并运行指定文件.不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估:而对于require()来说, ...
- centos7下tomcat7 或tomcat8启动超慢原因
1,找到你的jdk安装的位置 ${JAVA_HOME}/jre/lib/security/java.security 2,vi 打开后找到 securerandom.source=file:/dev/ ...
- html5--js函数在canvas中的应用
html5--js函数在canvas中的应用 总结: 1.script中的函数写了要调用 2.rgb()这样的模式的色彩比较适合做变量 3.body的onload事件 4.带参函数 效果: 代码: & ...
- bzoj4033 [HAOI2015]树上染色——树形DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4033 树形DP,状态中加入 x 与父亲之间的边的贡献: 边权竟然是long long... ...
- 字符设备驱动另一种写法—mmap方法操作LED
最近在看韦老师的视频,讲解了很多种字符设备的驱动写法.经过自己的研究之后,我发现还有另外一种写法,直接在应用层操作,省去了内核中的地址映射部分,使得用户可以在应用层直接操作LED. mm ...
- 分布式缓存一致性hash算法
当服务器不多,并且不考虑扩容的时候,可直接使用简单的路由算法,用服务器数除缓存数据KEY的hash值,余数作为服务器下标即可. 但是当业务发展,网站缓存服务需要扩容时就会出现问题,比如3台缓存服务器要 ...
- redis过期键删除策略以及大key删除方法
今天遇到了一个前同事挖的坑,刷新缓存中商品信息时先让key过期,然后从数据库里取最新数据然后再放到缓存中,他是这样写的 redisTemplate.expire(CacheConst.GOOGS_PR ...