Dialog详解(实时更新,未完待续...)

来源:互联网 发布:apache bench post 编辑:程序博客网 时间:2024/05/22 12:27

一,AlertDialog的使用
1,具有按钮的简单的AlertDialog的实现
先贴整体代码:
MainActivity.class

package com.example.dialog;import android.app.Dialog;import android.content.DialogInterface;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements DialogInterface.OnClickListener{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        AlertDialog.Builder mBuilder=new AlertDialog.Builder(this);        mBuilder.setIcon(R.mipmap.ic_launcher);//设置标题处的图片        mBuilder.setTitle("AlertDialog");//设置标题        mBuilder.setMessage("你喜欢编程吗?");//设置信息        mBuilder.setPositiveButton("是的", this);//设置确认按钮        mBuilder.setNegativeButton("不告诉你",this);//设置中间按钮        mBuilder.setNeutralButton("不是",this);//设置取消按钮        mBuilder.create().show();    }    @Override    public void onClick(DialogInterface dialog, int which) {switch (which){    case DialogInterface.BUTTON_POSITIVE:        Toast.makeText(this, "是的", Toast.LENGTH_SHORT).show();        break;    case DialogInterface.BUTTON_NEGATIVE:        Toast.makeText(this, "不告诉你", Toast.LENGTH_SHORT).show();        break;    case DialogInterface.BUTTON_NEUTRAL:        Toast.makeText(this, "不是", Toast.LENGTH_SHORT).show();        break;}    }}

然后我们来仔细分析:

AlertDialog.Builder mBuilder=new AlertDialog.Builder(this);

这段代码是任何AlertDialog最核心基本的东西,采用了常见的Builder设计模式,拥有了这个Builder我们可以对AlertDialog进行初始化了。

mBuilder.setIcon(R.mipmap.ic_launcher);//设置标题处的图片

在标题处添加图片。

mBuilder.setTitle("AlertDialog");//设置标题

设置标题。

mBuilder.setMessage("你喜欢编程吗?");//设置信息

设置信息,处于Dialog中间的内容。
让后就是设置Dialog下面的Button了:

        mBuilder.setPositiveButton("是的", this);//设置确认按钮        mBuilder.setNegativeButton("不告诉你",this);//设置中间按钮        mBuilder.setNeutralButton("不是",this);//设置取消按钮

这三个方法的第二个参数为:DialogInterface.OnClickListener,这里因为活动实现了DialogInterface.OnClickListener,所以直接传入this。
然后我们三个button设置了监听:

@Override    public void onClick(DialogInterface dialog, int which) {switch (which){    case DialogInterface.BUTTON_POSITIVE:        Toast.makeText(this, "是的", Toast.LENGTH_SHORT).show();        break;    case DialogInterface.BUTTON_NEGATIVE:        Toast.makeText(this, "不告诉你", Toast.LENGTH_SHORT).show();        break;    case DialogInterface.BUTTON_NEUTRAL:        Toast.makeText(this, "不是", Toast.LENGTH_SHORT).show();        break;}

再调用

mBuilder.create().show();

创建AlertDialog实例然后调用show方法,让AlertDialog显现出来,效果如下图:

2,具有列表的AlertDialog
需要调用一个关键方法:

mBuilder.setItems(CharSequence []items,DialogInterface.OnClickListener);mBuilder.setItems(int itemsId,DialogInterface.OnClickListener);

A,第一种方法
第一种方法第一个参数是一个字符数组,使用方法如下:

        String []mItems={"Fragment","ViewPager","Toobar"};        mBuilder.setItems(mItems,this);//取代message部分,item从零开始数

很容易理解,就不讲解了。
B,第二种方法
第二种方法第一个参数是一个字符数组资源的id,调用过程如下:
首先在res/values下新建arrays.xml文件:
arrays.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <string-array name="mItems">        <item>ShaPerference</item>        <item>ProgressDialog</item>    </string-array></resources>

然后在activity中调用:

mBuilder.setItems(R.array.mItems,this);

最后再说下它们的监听问题,它们的which值从0开始,按序增加:

 @Override    public void onClick(DialogInterface dialog, int which) {switch (which){    case DialogInterface.BUTTON_POSITIVE:        Toast.makeText(this, "是的", Toast.LENGTH_SHORT).show();        break;    case DialogInterface.BUTTON_NEGATIVE:        Toast.makeText(this, "不告诉你", Toast.LENGTH_SHORT).show();        break;    case DialogInterface.BUTTON_NEUTRAL:        Toast.makeText(this, "不是", Toast.LENGTH_SHORT).show();        break;    case 0:        Toast.makeText(this, "item"+which, Toast.LENGTH_SHORT).show();        break;}

注意看最后一行,代表列表中第一个按钮。
最后效果如下:

原创粉丝点击