课程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的实现的更多相关文章

  1. Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder

    Stack Overflow 排错翻译  - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder 转自:ht ...

  2. Android中的AlertDialog使用示例五(自定义对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...

  3. android 弹出AlertDialog的学习案例

    我在编写的时候,测试的关键代码: AlertDialog.Builder builder=new AlertDialog.Builder(MainPointListActivity.this); bu ...

  4. 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 ...

  5. setView的AlertDialog在受到二次点击后出错

    错误报告: 10-21 13:11:16.009: E/AndroidRuntime(27937): FATAL EXCEPTION: main10-21 13:11:16.009: E/Androi ...

  6. 关于AlertDialog.Builder(Context context)中所应传入的context

    错误报告: 10-20 14:34:46.565: E/AndroidRuntime(23098): FATAL EXCEPTION: main10-20 14:34:46.565: E/Androi ...

  7. 安卓 自定义AlertDialog对话框(加载提示框)

    AlertDialog有以下六种使用方法: 一.简单的AlertDialog(只显示一段简单的信息) 二.带按钮的AlertDialog(显示提示信息,让用户操作) 三.类似ListView的Aler ...

  8. Android AlertDialog去除黑边白边自定义布局(转)

    LayoutInflater inflater = this.getLayoutInflater(); View view = inflater.inflate(R.layout.test_alert ...

  9. Android开发2:事件处理及实现简单的对话框(Toast,AlertDialog,Snackbar,TextInputLayout的使用)

    前言 啦啦啦~又要和大家一起学习Android开发啦,博主心里好激动哒~ 在上篇博文中,我们通过线性布局和基础组件的使用,完成了一个简单的学生课外体育积分电子认证系统的界面,本篇博文,将和大家一起熟悉 ...

  10. Android中的AlertDialog使用示例四(多项选择确定对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...

随机推荐

  1. mysql命令行爱好者必备工具mycli

    mycli MyCLI is a command line interface for MySQL, MariaDB, and Percona with auto-completion and syn ...

  2. arcgis 发布地图服务

    arcgis中,地图文档需要发布,才能为WEB所用. 咋发布呢? 1.在arcmap里面,点击 文件 - 共享为 - 服务 2.在弹出的对话框里选"发布服务",然后 3.这里面有点 ...

  3. eclipse中将web项目部署到tomcat

    eclipse中将web项目部署到tomcat. myeclipse部署WEB项目到tomcat比较方便,但eclipse貌似默认是不会替你将web自动部署到tomcat下的.你Run as该web项 ...

  4. C++中各大有名的科学计算库

    在 C++中,库的地位是非常高的.C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论.现实中,C++的库门类繁多,解决 的问题也是极其广泛,库从轻量 ...

  5. Node.js 101(2): Promise and async

    --原文地址:http://blog.chrisyip.im/nodejs-101-package-promise-and-async 先回想一下 Sagase 的项目结构: lib/ cli.js ...

  6. Android Studio集成Genymotion 及Genymotion 配置ADB

    1.打开 Android Studio,依次[File]-[Settings],快捷键  Ctrl + Alt + S 2.在打开的 settings 界面里找到 plugins 设置项,点击右侧的“ ...

  7. bzoj3272: Zgg吃东西&&3267: KC采花

    口胡 我们容易得到一个费用流的做法,流出k的流量分配给各个点,各个点向下一个点流费用为它的价值的边,然后汇总到ed 观察发现对于流一次,相当于选择了一个区间 如果流了反向边,相当于减去了这一段 可以用 ...

  8. HDU4009 Transfer water —— 最小树形图 + 不定根 + 超级点

    题目链接:https://vjudge.net/problem/HDU-4009 Transfer water Time Limit: 5000/3000 MS (Java/Others)    Me ...

  9. AngularJS 指令(Directives)实践指南

    指令(Directives)是所有AngularJS应用最重要的部分.尽管AngularJS已经提供了非常丰富的指令,但还是经常需要创建应用特定的指令.这篇教程会为你讲述如何自定义指令,以及介绍如何在 ...

  10. Strip

    B. Strip time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...