您的位置:首页 > 移动开发 > Android开发

android中dialog的简单使用

2015-03-02 21:07 211 查看
http://www.xuanyusong.com/archives/9

普通的弹出对话框:

[code]    AlertDialog.Builder builder=new Builder(this);
    builder.setTitle("下载提示:");
    builder.setMessage("是否继续下载?");
    builder.setIcon(R.drawable.ic_launcher);
    MyListener listener=new MyListener();
    builder.setPositiveButton("是", listener);
    builder.setNegativeButton("否", listener);
    builder.setNeutralButton("不确定", listener);
    AlertDialog dialog=builder.create();
    dialog.show();


事件监听:

class MyListener implements OnClickListener{

[code]    public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub
        switch(which){
        case DialogInterface.BUTTON_POSITIVE:
            Toast.makeText(getApplication(), "点击了是", Toast.LENGTH_LONG).show();
            break;
        case DialogInterface.BUTTON_NEUTRAL:
            Toast.makeText(getApplication(), "点击了不确定", Toast.LENGTH_LONG).show();
            break;
        case DialogInterface.BUTTON_NEGATIVE:
            Toast.makeText(getApplication(), "点击了否", Toast.LENGTH_LONG).show();
            break;
        }
    }
}


列表对话框:

[code]    final String[] items=new String[]{"苹果","香蕉","花蜜瓜"};
    builder.setItems(items, new OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(MainActivity.this,items[which], Toast.LENGTH_LONG).show();
        }
    });

//注意 此时对话框不能设置builder.setMessage函数,因为
与builder.setItems冲突


单选列表对话框:

[code]  //第二个参数是设置默认的被选项
    builder.setSingleChoiceItems(items, 0,new OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
           Toast.makeText(MainActivity.this,items[which], Toast.LENGTH_LONG).show();
        }
    });
 //注意 此时对话框不能设置builder.setMessage函数


复选列表对话框:

[code]final String[] items=new String[]{"苹果","香蕉","葡萄","梨"};
    final boolean[] checked=new boolean[]{false,true,false,false};

    builder.setMultiChoiceItems(items, checked,new OnMultiChoiceClickListener() {

        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
            // TODO Auto-generated method stub

        }
    });

 //注意 此时对话框不能设置builder.setMessage函数

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

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            ArrayList<String> list=new ArrayList<String>();
            for(int i=0;i<items.length;i++){
                if(checked[i]){
                    list.add(items[i]+"  ");
                }
            }

            Toast.makeText(MainActivity.this, "选择了:"+list.toString(),Toast.LENGTH_LONG).show();
        }
    });


自定义对话框:

[code] View v=LayoutInflater.from(this).inflate(R.layout.login, null);
    this.editText_userName=(EditText) v.findViewById(R.id.editText_userName);
    this.editText_pwd=(EditText) v.findViewById(R.id.editText_pwd); 
    builder.setView(v);


/**

* 让当前对话框不要关闭

[code]protected void notCloseDialog(DialogInterface dialog) {
    //mShowing

    try {
        Field field=dialog.getClass().getSuperclass().getDeclaredField("mShowing");
        //取消java的语法检查
        field.setAccessible(true);
        //让当前对话框不可关闭
        field.set(dialog, false);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}


让当前对话框关闭

[code]  protected void closeDialog(DialogInterface dialog) {
    try {
        Field   field=dialog.getClass().getSuperclass().getDeclaredField("mShowing");
        //取消java的语法检查
        field.setAccessible(true);
        //让当前对话框可关闭
        field.set(dialog, true);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}


最后介绍进度条对话框:

[code]    dialog=new ProgressDialog(this);
    dialog.setTitle("进度条窗口");
    dialog.setIcon(R.drawable.ic_launcher);
    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    dialog.setMax(100);

    dialog.setButton("确定", new OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub

        }
    });

    dialog.setButton2("取消", new OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub

        }
    });

    dialog.show();


开启线程,更新进度:

[code]new Thread(new Runnable() {

        int progress=0;
        @Override
        public void run() {
            // TODO Auto-generated method stub
           while(progress<100){
               progress++;
               SystemClock.sleep(100);
               dialog.setProgress(progress);
           }
           dialog.dismiss();
        }
    }).start();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: