登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

kangzye的博客

加Q群25382780切磋java,加19360923群研究JavaScript

 
 
 

日志

 
 

android学习-对话框  

2010-12-06 13:11:42|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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(){...});
  评论这张
 
阅读(1424)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018