Android入門筆記之Dialog

<1>簡介

      今天學習AlertDialog,以及單選列表dialog和複選列表dialog。

 

<2>關鍵步驟

       新建一個字符串數組資源文件/res/values/array.xml,用於提供單選列表dialog和複選列表dialog的數據。

       還是通過showDialog函數來調用創建Dialog,通過AlertDialog.Builder來創建相應的AlertDialog

<3>出現的問題

       無

<4>代碼及解釋

AlertDialog效果圖:      

 

單選列表dialog效果圖:


複選列表dialog效果圖:

array.xml:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
  <string-array name="msa">
     <item>游泳</item>
     <item>打籃球</item>
     <item>寫Java程序</item>
  </string-array>
  <string-array name="city">
     <item>北京</item>
     <item>上海</item>
     <item>深圳</item>
  </string-array>
</resources>

AlertDialogActivity:

package com.ui.dialog;

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

import com.test.R;

public class AlertDialogActivity extends Activity{
	/**   
	 * @ProjectName:  [androidtest] 
	 * @Package:      [com.ui.dialog.AlertDialogActivity.java]  
	 * @ClassName:    [AlertDialogActivity]   
	 * @Description:    
	 * @Author:       [gmj]   
	 * @CreateDate:   [2013-8-29 下午7:47:55]   
	 * @Version:      [v1.0] 
	 */
	
	boolean[] mulFlags = new boolean[]{false , false , false};
	
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_dialog);
		Button b = (Button)this.findViewById(R.id.buttondialog);
		b.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				new AlertDialog.Builder(AlertDialogActivity.this)
				.setTitle("消息提示").setMessage("this is a alertdialog")
				.setPositiveButton(
						"sure",
						new DialogInterface.OnClickListener() {
							
							@Override
							public void onClick(DialogInterface dialog, int which) {
								// TODO Auto-generated method stub
								
							}
					}
				).show();
			}			
		});
		
		Button bt = (Button)this.findViewById(R.id.buttondialog2);
		bt.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				showDialog(0);
			}
		});
		
		Button bt2 = (Button)this.findViewById(R.id.buttondialog3);
		bt2.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				showDialog(1);
			}
		});			
	}
	
	public Dialog onCreateDialog(int id)
	{
		Dialog dialog = null;
		switch(id)
		{
			case 0:
				Builder bu = new AlertDialog.Builder(this);
				bu.setIcon(R.drawable.ic_launcher);
				bu.setTitle("單選列表對話框");
				bu.setSingleChoiceItems(R.array.msa, 
						0, 
						new DialogInterface.OnClickListener() {
							
							@Override
							public void onClick(DialogInterface dialog, int which) {
								// TODO Auto-generated method stub
								EditText et = (EditText)findViewById(R.id.editdialog);
								et.setText("you choose:" + getResources().getStringArray(R.array.msa)[which]);
							}
						}
				);
				bu.setPositiveButton(
						"sure",
						new DialogInterface.OnClickListener() {
							
							@Override
							public void onClick(DialogInterface dialog, int which) {
								// TODO Auto-generated method stub
								
							}
					});
				dialog = bu.create();
				break;
				
			case 1:
				Builder bu2 = new AlertDialog.Builder(this);
				bu2.setIcon(R.drawable.ic_launcher);
				bu2.setTitle("複選列表對話框");
				bu2.setMultiChoiceItems(R.array.city, mulFlags, 
						new DialogInterface.OnMultiChoiceClickListener() {
							
							@Override
							public void onClick(DialogInterface dialog, int which, boolean isChecked) {
								// TODO Auto-generated method stub
								mulFlags[which] = isChecked;
								String resultMsg = "you choose:";
								for(int i = 0 ; i < mulFlags.length ; i++)
								{
									if(mulFlags[i])
										resultMsg = resultMsg + getResources().getStringArray(R.array.city)[i] + "、";
								}
								EditText et = (EditText)findViewById(R.id.editdialog);
								et.setText(resultMsg);
							}
						});
				bu2.setPositiveButton(
						"sure",
						new DialogInterface.OnClickListener() {
							
							@Override
							public void onClick(DialogInterface dialog, int which) {
								// TODO Auto-generated method stub
								
							}
					});
				dialog = bu2.create();
				break;
				
		}
		return dialog;
	}
}



發佈了29 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章