Android各种对话框的使用

1 普通对话框(喜欢,不喜欢,一般)

2 输入“文本”后确定或取消

3 对话框退出功能,确定是否退出

4 带有单选按钮的弹出框使用 

5 以列表形式,显示单选列表 

6 以复选框的形式,展示的对话框 

一、调用各种对话框的按钮xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/Button01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="投票选择" >
    </Button>

    <Button
        android:id="@+id/Button02"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="输入确定" >
    </Button>

    <Button
        android:id="@+id/Button03"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="确定退出" >
    </Button>

    <Button
        android:id="@+id/Button04"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="单选按钮组" >
    </Button>

    <Button
        android:id="@+id/Button05"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="单选列表对话框" >
    </Button>
    <Button
        android:id="@+id/Button06"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="复选列表对话框" >
    </Button>
    
    
</LinearLayout>

二、Activity的代码 

package com.example.fragmentdemo1;  
  
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
//对话框测试  
//参考  http://blog.csdn.net/andie_guo/article/details/14145135
public class DialogActivity extends Activity {  
    Button btnShowDialog;  
    Button btnShowDialog_Layout;  
    Button quitBtn;
    Button singleChooseBtn;
    Button singleChoseListBtn;
    Button checkboxChoseListBtn;
    
    EditText editText;
    
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.dialog);  
        
        //定义按钮  
        btnShowDialog=(Button)this.findViewById(R.id.Button01);  
        btnShowDialog.setOnClickListener(new ClickEvent());  
        
        btnShowDialog_Layout=(Button)this.findViewById(R.id.Button02);  
        btnShowDialog_Layout.setOnClickListener(new ClickEvent());  
        
        quitBtn=(Button)this.findViewById(R.id.Button03);  
        quitBtn.setOnClickListener(new ClickEvent());  

        singleChooseBtn=(Button)this.findViewById(R.id.Button04);  
        singleChooseBtn.setOnClickListener(new ClickEvent());  

        singleChoseListBtn=(Button)this.findViewById(R.id.Button05);  
        singleChoseListBtn.setOnClickListener(new ClickEvent());  

        checkboxChoseListBtn=(Button)this.findViewById(R.id.Button06);  
        checkboxChoseListBtn.setOnClickListener(new ClickEvent()); 
        
    }  
      
      
    //统一处理按键事件  
    class ClickEvent implements OnClickListener{
        @Override  
        public void onClick(View v) {  
            if(v==btnShowDialog)  
                showDialog(DialogActivity.this);  
                  
            else if(v==btnShowDialog_Layout)  
                showDialog_Layout(DialogActivity.this);  
            else if(v==quitBtn){
            	showDialog_quit(DialogActivity.this);  
            }else if( v==singleChooseBtn){ 
            	showDialog_danxuan(DialogActivity.this);
            }else if(v==singleChoseListBtn ){
            	show_dialog_list(DialogActivity.this);
            }else if(v==checkboxChoseListBtn){
            	show_dialog_checkbox(DialogActivity.this);
            }
        }  
  
    }  
    //显示基本的AlertDialog  
    private void showDialog(Context context) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);  
        builder.setIcon(R.drawable.title);  
        builder.setTitle("喜好调查");  
        builder.setMessage("您喜欢玩植物大战僵尸么?");  
        builder.setPositiveButton("喜欢",  
                new DialogInterface.OnClickListener() {  
                    public void onClick(DialogInterface dialog, int whichButton) {  
                        setTitle("点击了对话框上的Button1");  
                        Toast.makeText(getApplicationContext(), "点击了喜欢",
                        	     Toast.LENGTH_SHORT).show();
                    }  
                });  
        builder.setNeutralButton("一般",  
                new DialogInterface.OnClickListener() {  
                    public void onClick(DialogInterface dialog, int whichButton) {  
                        setTitle("点击了对话框上的Button2");  
                        Toast.makeText(getApplicationContext(), "点击了对话框上一般",
                       	     Toast.LENGTH_SHORT).show();
                    }  
                });  
        builder.setNegativeButton("不喜欢",  
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {  
                        setTitle("点击了对话框上的Button3");  
                        Toast.makeText(getApplicationContext(), "您点击了不喜欢",
                          	     Toast.LENGTH_SHORT).show();
                    }  
                });  
        builder.show();  
    }  
  
  
    //显示基于Layout的AlertDialog ,有输入框的弹出框  
    private void showDialog_Layout(Context context) { 
    	
        LayoutInflater inflater = LayoutInflater.from(this);  
        final View textEntryView = inflater.inflate(  
                R.layout.alertdialoglayout, null);  
        
        final EditText edtInput=(EditText)textEntryView.findViewById(R.id.edtInput);  
        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setCancelable(false);  
        builder.setIcon(R.drawable.title );  
        builder.setTitle("Title");  
        //这个用  xml布局  或者直接   new对象   都行 
//        builder.setView(textEntryView);  
        
        editText = new EditText(context);
     
        builder.setView(editText) ; 
        builder.setPositiveButton("确认",  
                new DialogInterface.OnClickListener() {  
                    public void onClick(DialogInterface dialog, int whichButton) {  
                        setTitle(edtInput.getText());  
                         
                        Toast.makeText(getApplicationContext(), "点击了对话框上取消: "+editText.getText(),
                         	     Toast.LENGTH_SHORT).show();
                    }  
                });  
        builder.setNegativeButton("取消",  
                new DialogInterface.OnClickListener() {  
                    public void onClick(DialogInterface dialog, int whichButton) {  
                        setTitle("");  
                        Toast.makeText(getApplicationContext(), "点击了对话框上取消",
                         	     Toast.LENGTH_SHORT).show();
                    }  
                });  
        builder.show();  
    }
    //是否退出对话框的测试 
    private void showDialog_quit(Context context) { 
    	AlertDialog.Builder builder = new Builder(context);
    	builder.setMessage("妖精,确定逃跑么");
    	builder.setPositiveButton("确定", new AlertDialog.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				 dialog.dismiss();
				 //结束当前Activity的生命周期并释放资源
				 DialogActivity.this.finish();
			}
 
		});
    	
    	builder.setNegativeButton("取消",  new AlertDialog.OnClickListener(){
			@Override
			public void onClick(DialogInterface dialog, int which) {
				dialog.dismiss();
			}
    	});
    	builder.create().show();
    }
    
    //单选按钮对话框 , 数据保存在监听器对象中  
    private void showDialog_danxuan(Context context) { 
    	//单选对话框监听器
    	final SingleChoiceOnClickListener singleChoiceOnClickListener = new SingleChoiceOnClickListener();
    	
    	AlertDialog.Builder builder = new AlertDialog.Builder(context);
    	builder.setTitle("单选对话框");
    	builder.setIcon(R.drawable.title);
    	//R.array.hobby 也可以用下面的 数组代替
    	//final String[] items = {"java", ".net", "php"}; 
    	//1 数组数据  2 第几个被选中  3 点击的监听器 
    	builder.setSingleChoiceItems( R.array.hobby, 0,   singleChoiceOnClickListener);
    	
    	 //添加一个确定按钮
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
        	
            public void onClick(DialogInterface dialog, int which) {
                
            	String[] hoddy=getResources().getStringArray(R.array.hobby);
                Toast.makeText(getApplicationContext(), "您选择了: "+hoddy[singleChoiceOnClickListener.getWhich()],
                  	     Toast.LENGTH_SHORT).show();  
                dialog.dismiss();
            }
        });
    	builder.create().show();
    }
    //单选的监听器
    private class SingleChoiceOnClickListener implements DialogInterface.OnClickListener {  
        private int which = 0;  
        @Override  
        public void onClick(DialogInterface dialogInterface, int which) {  
        	   Toast.makeText(getApplicationContext(), "您选择了1111: "+which,
               	     Toast.LENGTH_SHORT).show();  
            this.which = which;  
        }
        
        public int getWhich() {  
            return which;  
        }  
    }  
    
    //显示列表对话框
    private void show_dialog_list(Context context){
    	final String[] items = new String[]{"北京","上海","深圳"};
    	AlertDialog.Builder builder = new AlertDialog.Builder(context);
    	builder.setTitle("列表对话框");
    	builder.setItems(items,  new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				 Toast.makeText(DialogActivity.this, "您选中了"+items[which], Toast.LENGTH_SHORT ).show();
				
			}
		});
    	builder.create().show();
    }
    
    //显示带有复选框的 对话框 
    private void show_dialog_checkbox(Context context){
    	final String[] items = new String[]{"北京","上海","深圳"};
    	final boolean[] selected = new boolean[]{true,false,true};  
    	
    	AlertDialog.Builder builder = new AlertDialog.Builder(context);
    	builder.setTitle("复选框 对话框");
    	builder.setMultiChoiceItems(items, selected, new DialogInterface.OnMultiChoiceClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which,
					boolean isChecked) {
				selected[which]=isChecked;
			}
		 
		});
    	builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
			      StringBuffer str = new StringBuffer("您选中了:");  
		          for(int i=0;i<selected.length;i++){  
		            if(selected[i]){  
		                str.append(items[i]+",");  
		            } 
		         }  
		        str.deleteCharAt(str.length()-1);  
		        Toast.makeText(DialogActivity.this, str, Toast.LENGTH_SHORT).show(); 
			}  
    		
    	});
    	builder.create().show();
    }  
    
}  

 

三、array.xml的数据列表

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string-array name="hobby">        
     <item>游泳</item>            
     <item>打篮球</item>            
     <item>登山</item>        
  </string-array>
</resources>

猜你喜欢

转载自username2.iteye.com/blog/2185306