`
sunxin1001
  • 浏览: 310028 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

android学习-对话框

阅读更多

package com.kangzye.dialog;

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

public class MainActivity extends Activity {
    private final static int SIMPLE_DIALOG = 0;
    private final static int LIST_DIALOG = 1;
    private final static int RADIO_DIALOG = 2;
    private final static int CHECKBOX_DIALOG = 3;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button) findViewById(R.id.btn);
        Button btn2 = (Button) findViewById(R.id.btn2);
        Button btn3 = (Button) findViewById(R.id.btn3);
        Button btn4 = (Button) findViewById(R.id.btn4);
        registClickListener(btn, SIMPLE_DIALOG);
        registClickListener(btn2, LIST_DIALOG);
        registClickListener(btn3, RADIO_DIALOG);
        registClickListener(btn4, CHECKBOX_DIALOG);
    }
    
    private void registClickListener(Button btn,final int flag){
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showDialog(flag);
            }
        });
    }

    @Override
    public Dialog onCreateDialog(int id) {
        Dialog dialog = null;
        switch (id) {
        case SIMPLE_DIALOG:
            EditText txt = (EditText) findViewById(R.id.txt);
            Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("标题");
            builder.setMessage(txt.getText().toString());
            builder.setPositiveButton("确定", new AlertDialog.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this, "which:" + which, 1)
                            .show();
                }
            });
            dialog = builder.create();
            break;
        case LIST_DIALOG:
            Builder builder2 = new AlertDialog.Builder(this);
            builder2.setTitle("标题");
            builder2.setItems(R.array.items, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this, dialog+":"+which, 1).show();
                }
            });
            builder2.setPositiveButton("确定", new AlertDialog.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this, "which:" + which, 1)
                            .show();
                }
            });
            dialog = builder2.create();
            break;
        case RADIO_DIALOG:
            Builder build3=new AlertDialog.Builder(this);
            build3.setTitle("单选框");
            build3.setSingleChoiceItems(R.array.items, 2, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    alert(dialog+":"+which);
                }
            });
            dialog=build3.create();
            build3.setPositiveButton("确定", new AlertDialog.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this, "which:" + which, 1)
                            .show();
                }
            });
            break;
        case CHECKBOX_DIALOG:
            Builder build4=new AlertDialog.Builder(this);
            build4.setTitle("复选框");
            build4.setMultiChoiceItems(R.array.items, null, new DialogInterface.OnMultiChoiceClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    alert(dialog+":"+which+":"+isChecked);
                }
            });
            build4.setPositiveButton("确定", new AlertDialog.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this, "which:" + which, 1).show();
                }
            });
            dialog=build4.create();
            break;
        default:
            break;
        }
        return dialog;
    }
    private void alert(String msg){
        Toast.makeText(this, msg, 1).show();
    }
}
以上示例了4种对话框:简单对话框、列表对话框、单选对话框、复选对话框
它们都是通过 AlertDialog 实现的。只是有少许不同。
简单对话框 设置builder 的message即可
列表对话框 设置一个List 和一个 DialogInterface.OnClickListener 实例 到其setItems 方法即可当有选项被点击时,DialogInterface.OnClickListener实例的public void onClick(DialogInterface dialog, int which) 方法将被调用,其中 which 就是被点击item的序号,从0开始。这样你就知道是哪个被点击了。这种对话框在选项被点击后即会关闭,所以上面程序中为对话框添加的确定按钮(通过builder2.setPositiveButton("确定", new AlertDialog.OnClickListener() {......});)其实没必要也没有意义,或许在什么都不像选择时用来关闭对话框时还是有用的。
单选对话框 不同之处在于通过方法:build3.setSingleChoiceItems(R.array.items, 2, new DialogInterface.OnClickListener(){...});来设置对话框为单选对话框。其中的2表示默认情况下第二个选项是被选中的。当某个选项被选择后DialogInterface.OnClickListener实例的public void onClick(DialogInterface dialog, int which)方法将被调用。which即为被选择的项的序号,从0开始。此对话框和列表对话框一样,当某一个选项被点击后,对话框就会关闭。
复选对话框 通过方法build4.setMultiChoiceItems(R.array.items, new boolean[]{true,false,true}, new DialogInterface.OnMultiChoiceClickListener(){.....});即可表示此为复选对话框。第一个参数是选项内容。第二个参数是默认那些选项是被选中的。第三个参数的public void onClick(DialogInterface dialog, int which, boolean isChecked); 方法在选项被点击后将被调用,which 和上面一样是点击项的序号,从0开始。isChecked 表示点击完后此选项是否是选中状态。此对话框在选项点击后不会关闭对话框,需要为builder 设置关闭按钮通过方法:build4.setPositiveButton("确定", new AlertDialog.OnClickListener(){...});

分享到:
评论

相关推荐

    Android移动开发-对话框.zip

    在`Dialog-master`这个项目中,可能包含了这些对话框类型的实例代码,帮助开发者理解和学习如何在实际应用中创建和使用它们。通过分析和运行这些示例,你可以深入理解Android对话框的用法,提升你的Android开发技能...

    Android常用对话框源码对话框大全

    以上是"Android常用对话框源码--对话框大全"中的主要知识点,通过学习和实践这些,开发者可以熟练掌握Android应用中对话框的使用,提高用户体验。在实际开发中,可以根据需求灵活组合和定制,创造出符合应用特性的...

    Android-Dialog对话框

    在Android开发中,Dialog对话框是一种常见的用户交互组件,它用于在主界面之上显示一个临时窗口,用于提示信息、确认操作或提供选择项。本文将深入探讨`Android-Dialog`对话框的相关知识点,并结合源码分析,以帮助...

    商业编程-源码-对话框源代码 transparent_dialog_demo.zip

    透明对话框的实现涉及到图形用户界面(GUI)编程的技术,如Windows API、Qt、JavaFX、WPF或是Android的DialogFragment等。实现的关键在于调整对话框的透明度属性。在Windows平台上,可以使用SetWindowLong和...

    Android代码-进度条对话框Demo.zip

    在Android开发中,进度条对话框(ProgressDialog)是一种常见的用户界面元素,用于向用户展示一个操作的进度,比如数据...通过这个Demo,开发者可以学习如何在实际项目中正确地集成和使用进度条对话框,提升用户体验。

    探索Popupwindow-对话框风格的窗口(一)

    PopupWindow是Android开发中一种非常实用的组件,它允许开发者创建弹出式...通过深入学习和实践“探索PopupWindow-对话框风格的窗口(一)”的相关知识,开发者可以更好地理解和运用PopupWindow,提升应用的用户体验。

    Android代码-半透明对话框Demo源码.zip

    这个"Android代码-半透明对话框Demo源码.zip"应该包含了完整的代码示例,包括styles.xml、CustomDialogFragment.java和dialog_custom.xml,你可以下载后进行学习和实践。通过深入理解并应用这些知识,你将能够为自己...

    Android Studio 常用对话框

    在Android开发中,Android Studio是官方推荐的集成开发环境(IDE),它提供了丰富的功能和工具,使得开发者可以高效地创建Android应用程序。...通过实践和不断学习,开发者可以创建出更加直观、友好的Android应用。

    学习笔记----Android的对话框

    在Android应用开发中,对话框(Dialog)是一种重要的交互元素,用于向用户显示临时信息或者进行简单的用户交互。本文将深入探讨Android对话框的使用、种类及其相关知识点。 1. 对话框的基本类型: - AlertDialog:...

    Android代码-基本的对话框.rar

    在Android开发中,对话框(Dialog)是一种非常重要的组件,它用于向用户显示临时信息或者进行简单的交互。...通过学习和实践这些代码,开发者可以更好地掌握在Android应用中创建和管理对话框的方法。

    Android---UI篇---Dialog(对话框)

    ### Android UI篇——Dialog(对话框) 在Android应用开发中,对话框(Dialog)作为用户交互的重要组成部分之一,被广泛应用于各种场景下,比如提示信息、请求确认操作、登录界面等。本文将深入探讨Android中Dialog的...

    android列表对话框源码

    在Android开发中,列表对话框(List ...对于初学者来说,这是一个很好的学习和实践平台,可以加深对Android UI组件和事件处理的理解。对于有经验的开发者,源码可以作为快速实现列表对话框功能的起点,进行二次开发。

    Android入门开发实例--Dialog 对话框应用

    在Android开发中,对话框(Dialog)是一种非常重要的组件,用于与用户进行交互,提供临时信息或者需要用户做出选择的情况。本实例将带你深入了解如何在Android应用中使用Dialog,并通过实际操作来提升你的编程技能。...

    Android 普通对话框源码.zip

    通过对“Android 普通对话框源码”的学习和理解,开发者可以更好地掌握如何在自己的应用中有效地使用对话框,提升用户体验。记得查看源码中的注释和逻辑,这将有助于深入理解对话框的工作原理和使用方法。

    Android源码-Dialog对话框类源代码(8例).zip

    在Android开发中,Dialog对话框是一种非常常见的组件,它用于向用户展示临时信息或进行简单的交互操作。在本文中,我们将深入探讨Android源码中Dialog类的实现,并通过8个实例来理解其工作原理和使用方式。 首先,...

    android各种漂亮对话框

    通过学习和利用如“sweet-alert-dialog-eclipse”这样的库,开发者可以轻松地创建出美观、功能丰富的对话框,为用户带来更佳的交互体验。同时,这也体现了Android平台的灵活性和可扩展性,鼓励开发者根据自己的需求...

    Android 简单对话框,列表对话框示例

    在Android应用开发中,对话框(Dialog)是一种重要的交互元素,用于向用户显示临时信息或进行简单的用户交互。...通过学习和实践这些对话框的用法,开发者能够创建更加丰富和友好的用户界面,提高应用的用户体验。

    Android项目实战--手机卫士05--自定义对话框与拨打电话来启动activity

    在Android应用开发中,自定义对话框(Custom Dialog)与拨打电话功能是常见的需求,尤其在构建实用工具类的应用如“手机卫士”时。在这个项目实战中,我们将深入探讨如何实现这两个特性。 首先,自定义对话框在...

    Android对话框精粹1

    在Android应用开发中,对话框(Dialog)是一种重要的交互元素,用于向用户显示临时信息或进行简单的用户交互。..."Android对话框精粹1"中的资源和示例,无论是对初学者还是有经验的开发者,都是很好的学习和参考材料。

    Android源码——普通对话框源码.zip

    在Android开发中,对话框(Dialog)是一种常见的用户...总之,这个资源提供了一个关于如何在Android中创建普通对话框的实例,通过学习源码,开发者可以更深入地理解对话框的工作原理,并根据项目需求进行自定义和扩展。

Global site tag (gtag.js) - Google Analytics