首篇 sdk 之 AlertDialog

带着十足的干劲,用着有限的英语水平,我们来看看sdk里docs里的AlertDialog:

AlertDialog

SDK 原文描述:A dialog that can show a title, up to three buttons, a list of selectable items, or a custom layout.

 一个能够展示标题,多达三个按钮,一系列可选择条目的对话框。或者使用自定义的布局。

接下来就开始使用它:

  首先先声明一点,Dialog下的子类包括它本身,都是依附于一个Activity的生命,所以在创建一个Dialog时传递的上下文一定是某个Activity.this,而不是getApplicationContent(),切记这一点。

第一个用法也是最常用的:实现效果

package com.aimqq.alertdialogsdk;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.View;
import android.widget.Toast;

public class NormalDialog extends Activity {

    private AlertDialog.Builder builder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_normal_dialog);
        builder = new Builder(NormalDialog.this);
        builder.setTitle("AlertDialog");
        builder.setMessage("欢迎来到aimqq博客");
        builder.setPositiveButton("确定", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(getApplicationContext(), "点击确定按钮",
                        Toast.LENGTH_SHORT).show();
            }
        });
        builder.setNegativeButton("取消", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), "点击取消按钮",
                        Toast.LENGTH_SHORT).show();
            }
        });
    }

    public void show(View v) {
        //这种方式也可以显示
//        builder.show();
        AlertDialog alertDialog = builder.create();
        alertDialog.show();
    }
}

这里说一个可能会有的疑问,为什么不直接 new AlertDialog(context)呢?因为你new不出来,她的三个构造方法都是protected!!

第二种用法:添加一个条目

listBuilder = new Builder(NormalDialog.this);
        listBuilder.setTitle("选择一种颜色");
        String[] items = new String[] { "红色", "绿色", "蓝色", "黄色" };
        listBuilder.setItems(items, new OnClickListener() {
            // 参1 就是当前的这个 dialog 参2 就是被点击的那个条目
            @Override
            public void onClick(DialogInterface dialog, int which) {
                switch (which) {
                case 0:
                    Toast.makeText(getApplicationContext(), "我是红色",
                            Toast.LENGTH_SHORT).show();
                    break;
                case 1:
                    Toast.makeText(getApplicationContext(), "我是绿色",
                            Toast.LENGTH_SHORT).show();
                    break;
                case 2:
                    Toast.makeText(getApplicationContext(), "我是蓝色",
                            Toast.LENGTH_SHORT).show();
                    break;
                case 3:
                    Toast.makeText(getApplicationContext(), "我是黄色",
                            Toast.LENGTH_SHORT).show();
                    break;
                }
            }
        });

第四种用法:添加多选条目或者单选条目

   

multBuilder = new Builder(NormalDialog.this);
        multBuilder.setTitle("选择你喜欢的颜色");
        boolean[] checkedItems = new boolean[]{false,true,false,false}; //默认选中绿色
        //参1 要显示的条目集   参2默认那些条目选中   参3 监听条目
        multBuilder.setMultiChoiceItems(items, checkedItems , new OnMultiChoiceClickListener() {

            //参3 isChecked True if the click checked the item, else false.
            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                //这里可根据自身需要,做相应的逻辑处理
            }
        });
        multBuilder.setPositiveButton("确定", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        });
        multBuilder.setNegativeButton("取消", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        });

单选:

   

multBuilder.setSingleChoiceItems(items, 0, null);
        multBuilder.setNegativeButton("取消", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        });

        multBuilder.setPositiveButton("确定", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        });

第五种用法:创建一个自定义的AlterDialog

  You can then call setView() to place the layout in the dialog. 你可以使用setVIew()方法将局部添加到dialog

Activity中的代码:

multBuilder = new Builder(NormalDialog.this);
        View view = View.inflate(NormalDialog.this, R.layout.dialog_cust, null);
        multBuilder.setView(view);
        // 可使用view对象获取控件做相应的逻辑操作
        multBuilder.setNegativeButton("取消", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        });

        multBuilder.setPositiveButton("登录", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        });

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ImageView
        android:src="@drawable/ic_launcher"
        android:layout_width="match_parent"
        android:layout_height="64dp"
        android:scaleType="center"
        android:background="#FFFFBB33"
        android:contentDescription="@string/app_name" />
    <EditText
        android:id="@+id/username"
        android:inputType="textEmailAddress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="4dp"
        android:layout_marginBottom="4dp"
        android:hint="请输入账号" />
    <EditText
        android:id="@+id/password"
        android:inputType="textPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="4dp"
        android:layout_marginBottom="16dp"
        android:fontFamily="sans-serif"
        android:hint="请输入密码"/>
</LinearLayout>

这基本就是AlertDialog使用的集中情况况,如果有遗漏或者错误请反馈一下,谢谢。

再顺便简单提一下,因为没有使用太多,就简单说一下

可以将Acitivity设置成Dialog使用,通过设置acitivity的主题就可以实现:

<activity android:theme="@android:style/Theme.Holo.Dialog" >
时间: 2024-10-16 22:45:32

首篇 sdk 之 AlertDialog的相关文章

linux命令学习-首篇

在home目录的.bashrc 添加了如下逻辑,目的是可以"每日"学习或复习linux命令 # 学习linux命令 # echo "Did you know that:"; whatis $(ls /bin | shuf -n 1) cowsay -f $(ls /usr/share/cowsay/cows | shuf -n 1 | cut -d. -f1) $(whatis $(ls /bin) 2>/dev/null | shuf -n 1) 效果图:

国内首篇介绍JanOS物联网操作系统的文章 - 如何把你的手机主板打造成物联网平台

天地会珠海分舵注:如无意外,您现在正在看的将是国内首篇且是唯一一篇介绍炙手可热的物联网的操作系统JanOS的文章!不信你去百度!希望大家能喜欢.但本文只是引言,更多信息请还是访问JanOS的官网:http://janos.io/ JanOS 让你的手机瞬间变身成物联网平台 JanOS是一个设计成运行在你的手机芯片上的操作系统.它可以在没有屏幕的情况下跑起来,让你可以可以通过当今红得发紫的JavaScript的API来访问你的手机的所有功能,从打电话到照相功能无所不包. 你问我在搞毛? 当前炙手可

IOS开发网络篇—SDK API IDE专业术语解释

API文档Application Programming Interface(应用程序接口)   reference 参考文档 Documentation  程序说明书 SDK (Software 软件 Development 开发 Kit)软件开发包 IDE 集成开发环境(integrated development environment)软件中的意思 IDE 电子集成驱动器(Integrated Drive Electronics)  相对硬件的意思 一.什么是SDK? SDK(Softw

ftk学习记(首篇)

[ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 非常早之前就知道ftk了,当时主要是由于买了李先静的书,所以知道了这么一个项目.由于对这样的gui的代码非常感兴趣.所以在我闲暇的时候也会拿来看一看.从整个project来看,代码非常工整.平台移植也方便.所以有兴趣的同学能够看一看. 一般对于一个开源项目.要深入地參与当中都要经历几个过程,这各自是使用.阅读.改动.重构. 大多数公司里面也会使用到开源项目,可是往往停留在使用的阶段. 所以.

首篇,个人经历

大学毕业已经两年了,软件测试也干了两年... 时光倒流,回到两年前... 和大多数人一样,迷迷糊糊度过了大学四年.有的人游戏打了四年,有的看人打游戏看了四年,哈哈,当然,这不可能是我,我是看小说看了四年.大一时候迷上了小说,然后就一发不可收拾,没日没夜的看,四年时间,各个大神的小说可真是看了个遍.于是乎,当最后拿着毕业证书准备找工作时,才感到无比迷茫,不知所措.本人是电子信息工程专业的,给自己未来的定位是成为电子工程师,所以简历基本上是往电子工程师助理岗位投,结果可想而知,在学校专业课不咋地,又

[首篇] 开工啦

时至今日,离奔三越来越近. 大学里学习微电子专业,只在大一的时候学习了C语言课程,虽然从大二学期末开始做挑战杯竞赛(采用VC++处理图像和视频),写了不少C++语言.但现在想想,那会儿写的代码真是只是C/C++,完全没有面向对象和泛型编程,不知道什么是OOP.什么时候是Template.什么是Design Pattern,只是将百度查的MFC代码揉在一起,倒是利用Visual Studio调试了不少疑难的Bug. 后来考研的时候,因为大四开了IC设计课程(大二和大三开的半导体物理.固体物理.理论

开博首篇

说起自己是软件专业的学生都觉得惭愧.四年下来,高数.概率.线代都是刚刚及格的水平:离散.数据结构等专业基础课学的云里雾里:计组.计网.操作系统也只是刚刚可以应付学校的期末考试:C.C++.C#.Java虽也都学了一个遍,却没有一门语言是认真研究过的,没有一个独立完成的可以拿的出手的项目.最大的成就大概是挂的学分大部分人无法超越. 直到准备考研以后,开始好好的正视自己和这个社会,虽然最后调剂到了一个不太如我意的双非学校,却仍要打起精神,用更大的力气去学习技能.毫不夸张的说,软件的我,考完研才真正爱

【小飞牛】记忆留住深刻过往,博客写出平淡事迹【博客首篇】

在记忆的长河中检索,很多知识早已模糊不清:很多事物,早已烟消云散.在曾经流逝的时间里面,自己有过对新知识掌握的喜悦, 有对新事物认知的感动.而如今,那些曾经有的还是没有得,都得靠搜索引擎来解决的时候.我发现自己貌似开始迷失了. 即使知道自己没有惟妙惟肖得文笔,也没有绘声绘色的言语.但是也不能阻止记下曾经学习过的一切. 不求给别人带来什么,至少能够给自己留下些什么. 欢迎有朋友加微信公众号[小飞牛]交流. 编程没改变世界的时候,先改变了你我. 我也希望自己学到的,能和大家一起分享.

PHP学习之路-首篇

一直都在想工作之余学习点什么,大学的时候学的是软件专业,在学校学了很多东西,像HTML+CSS.C.C++.VB.VC.JAVA等等,但都是只学了点皮毛,有些可以说连皮毛都不算,毕业后总觉得自己的大学生活都浪费了,好像什么都没学会一样,朋友告诉我其实不是这样的,大学教会了我们很多东西,但需要经过时间的沉淀才能看的出来. 现在工作用的是C#语言,想着再学个什么语言好呢,今天决定了再工作之余自学下PHP. 学习一门新语言需要做到以下几点:一.心态:要有好的心态,学习中难免会遇到很多的难题,尤其是自学