博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AlertDialog基本用法详解
阅读量:6432 次
发布时间:2019-06-23

本文共 6240 字,大约阅读时间需要 20 分钟。

AlertDialog简单介绍:

       AlertDialog可以在当前活动界面弹出一个对话框,用于提示一些重要信息或是警告内容。

       AlertDialog置于所有页面元素之上,能够屏蔽其他控件的交互。

       由于AlertDialog的构造方法被声明为protected,所以我们不能使用new来创建AlertDialog对象。

       Android为我们提供另外一个类AlertDialog.Builder,用它可以创建AlertDialog对象实例,用show()方法显示。

       AlertDialog有几个基本方法,

       例如:setTitile() setMessage() setCancelable() setPositiveButton() setNegativeButton() setNeutralButton() 等等。

       这些方法通过看字面意思,就差不多明白它的作用。

       下面就给读者介绍AlertDialog的基本使用方法。

首先是布局文件,在布局文件中添加三个按钮分别来处理相应的三个不同的AlertDialog。

关键代码如下:

1 
2
6 7
13
18
23 24

效果图如下:

下面就开始写java代码

为了便于统一管理各个活动类,创建一个基本活动类BaseActivity.java

关键代码如下:

1 public class BaseActivity extends Activity{ 2     @Override 3     protected void onCreate(Bundle savedInstanceState) { 4         super.onCreate(savedInstanceState); 5         //设置无标题 节省屏幕空间 6         requestWindowFeature(Window.FEATURE_NO_TITLE); 7         //打印正在运行活动的名称 调试所用 8         Log.d("BaseActivity", getClass().getSimpleName());          9     }10 }

基本工作准备完毕,开始重头戏:MainActivity.java extends BaseActivity

读者也可以直接继承Activity

第一步是必要控件 视图创建 控件加载以及设置监听

1 public class MainActivity extends BaseActivity { 2     //创建三个按钮 3     private Button btn_confirm; 4     private Button btn_cancel; 5     private Button btn_search; 6  7     @Override 8     protected void onCreate(Bundle savedInstanceState) { 9         super.onCreate(savedInstanceState);10         setContentView(R.layout.main);11         //加载按钮视图并添加监听事件12         btn_confirm = (Button) findViewById(R.id.btn_confirm);13         btn_cancel = (Button) findViewById(R.id.btn_cancel);14         btn_search = (Button) findViewById(R.id.btn_search);15         btn_confirm.setOnClickListener(new Listener());16         btn_cancel.setOnClickListener(new Listener());17         btn_search.setOnClickListener(new Listener());18     }

第二步自定义监听类Listener 管理三个按钮 并在每个按钮的点击事件中创建AlertDialog

首先是带一个按钮的AlertDialog,只需添加一个setPositiveButton()

按钮点击直接Toast

代码如下:

1     private class Listener implements OnClickListener { 2         AlertDialog.Builder dialog = null; 3  4         @Override 5         public void onClick(View view) { 6             // 利用switch对三个按钮分别进行监听 7             switch (view.getId()) { 8             case R.id.btn_confirm: 9                 dialog = new AlertDialog.Builder(MainActivity.this);10                 dialog.setTitle("My AlertDialog");11                 dialog.setMessage("The Google Play service has stoped");12                 dialog.setCancelable(false);13                 dialog.setPositiveButton("OK",new DialogInterface.OnClickListener() {14                             @Override15                             public void onClick(DialogInterface dialog, int which) {16                                     Toast.makeText(MainActivity.this, "You clicked OK", Toast.LENGTH_SHORT).show();17                               }18                          });19                 dialog.show();20                 break;

效果图如下:

其次是带有两个按钮的AlertDialog 添加setPositiveButton()和setNegativeButton()

按钮点击依旧采用Toast处理

代码如下:

1             case R.id.btn_cancel: 2                 dialog = new AlertDialog.Builder(MainActivity.this); 3                 dialog.setTitle("My AlertDialog"); 4                 dialog.setMessage("Are you sure you want to delete it"); 5                 dialog.setCancelable(false); 6                 dialog.setPositiveButton("Yes",new DialogInterface.OnClickListener() { 7                             @Override 8                             public void onClick(DialogInterface dialog, int which) { 9                                 Toast.makeText(MainActivity.this, "You clicked Yes", Toast.LENGTH_SHORT).show();10                             }11                         });12                 dialog.setNegativeButton("No",new DialogInterface.OnClickListener() {13                             @Override14                             public void onClick(DialogInterface dialog, int which) {15                                 Toast.makeText(MainActivity.this, "You clicked No",Toast.LENGTH_SHORT).show();16                             }17                         });18                 dialog.show();19                 break;

效果图如下:

最后是带有三个按钮的AlertDialog 逻辑和前者相似,只需增加一个setNeutralButton()即可

按钮点击调用自定义方法gotoWeb()

1             case R.id.btn_search: 2                 dialog = new AlertDialog.Builder(MainActivity.this); 3                 dialog.setTitle("My AlertDialog"); 4                 dialog.setMessage("Select the search engines"); 5                 dialog.setCancelable(false); 6                 dialog.setPositiveButton("Google", new DialogInterface.OnClickListener() { 7                             @Override 8                             public void onClick(DialogInterface dialog, int which) { 9                                 String URL = "http://www.google.com";10                                 gotoWeb(URL);11                             }12                         });13                 dialog.setNegativeButton("Baidu", new DialogInterface.OnClickListener() {14                             @Override15                             public void onClick(DialogInterface dialog, int which) {16                                 String URL = "http://www.baidu.com";17                                 gotoWeb(URL);18                             }19                         });20                 dialog.setNeutralButton("Bing", new DialogInterface.OnClickListener() {21                             @Override22                             public void onClick(DialogInterface dialog, int which) {23                                 String URL = "http://cn.bing.com";24                                 gotoWeb(URL);25                             }26                         });27                 dialog.show();28                 break;29             default:30                 break;31             }32         }33     }

效果图如下:

在第三个AlertDialog中调用了一个自定义方法gotoWeb(),使用意图调转到指定网站的访问

具体代码如下:

1     private void gotoWeb(String URL) {2         Uri uri = Uri.parse(URL);3         Intent intent = new Intent(Intent.ACTION_VIEW, uri);4         startActivity(intent);5         finish();6     }

注意:MainActivity被拆分成多个部分分块解释。

大功告成,本文介绍AlertDialog最基本的用法,当然还有很多炫酷的自定义效果,有兴趣可以自行深入学习。

 

转载请注明出处:

 

转载于:https://www.cnblogs.com/michaelwong/p/4114944.html

你可能感兴趣的文章
统计字母个数
查看>>
论思维变通的重要性!--input输入框禁止编辑,且 右键弹出窗口复制
查看>>
【ocp-12c】最新Oracle OCP-071考试题库(43题)
查看>>
Vuex
查看>>
iOS深拷贝浅拷贝
查看>>
spring coud feign
查看>>
NPOI List数据源 导出excel
查看>>
07抽象类特点
查看>>
什么事数据对象以及属性分为什么类型?
查看>>
图论精炼500题
查看>>
递归,动态规划,找最短路径,Help Jimmy
查看>>
poj 1006 生理周期
查看>>
Leetcode题目:House Robber III
查看>>
生物技术制药课程学生论文调研报告集
查看>>
LNK1104 无法打开文件 exe
查看>>
二叉树中和为某一值的路径
查看>>
【ZZ】一张图清晰追溯数据库的发展历程(1962-2016年)
查看>>
LeetCode 125. Valid Palindrome
查看>>
转:Awesome Image/Video segmentation
查看>>
深入浅出Mybatis系列(九)---强大的动态SQL(转载)
查看>>