1. 程式人生 > >AlertDiadig對話方塊的幾種常見的使用方式

AlertDiadig對話方塊的幾種常見的使用方式

在說AlertDialog之前先捎帶提一下Log日誌:

1.Log.e(tag,message)//列印error資訊,顏色為紅色。

2.Log.w(tag,message)//列印warn資訊,顏色為橙色。

3.Log.i(tag,message)//列印info通知資訊,顏色為綠色。

4.Log.d(tag,message)//列印debug資訊,顏色為藍色。

5.Log.v(tag,message)//列印verbose資訊,顏色為黑色。

日誌級別一次遞減,日誌的輸出量從少到多。

首先先明確一下什麼是AlertDialog:

對話方塊是在當前介面彈出的一個小視窗,用於顯示重要的提示資訊。提示使用者輸入資訊,確認資訊,或者顯示某種狀態,如下載進度退出提示等等。一般情況下,一般情況下,使用者要與對話方塊進行互動,然後返回到被遮蓋的介面以繼續運行當前的應用程式。

好了接下來說一下第一種對話方塊的形式:

在layout中activity_main中先引入一個button控制元件,貼上程式碼:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.alertdialog_demo.MainActivity"
    tools:ignore="MergeRootFrame" >
    
    <Button 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:id="@+id/dialog_btn1"
        android:text="確認對話方塊"
        />
    
    
</LinearLayout>
接下來在MainActivity中編寫程式碼:
package com.example.alertdialog_demo;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends ActionBarActivity {

	private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initEvent();
    }
	private void initEvent() {
		// TODO Auto-generated method stub
		
		button = (Button) findViewById(R.id.dialog_btn1);
		button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				showAlertDialog();
			}
		});
		
	}
	protected void showAlertDialog() {
		
		AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
		builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle("確認對話方塊資訊:");
		builder.setMessage("你確定要退出?");
<span style="white-space:pre">	</span>此處的OnclickListener不是android.view.View.OnClickListener而是android.content.DialogInterface.OnClickListener

		builder.setPositiveButton("確認",new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "點選了確認按鈕",Toast.LENGTH_SHORT).show();
				
			}

		});
		builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "點選了取消按鈕",Toast.LENGTH_SHORT).show();
			}
		});
		AlertDialog dialog = builder.create();
		dialog.show();
	}
}
第二種是單選對話方塊,程式碼只是把initEvent方法中的Onclick方法中的showAlertDialog();換成showAlertDialog2();即可.下面貼上showAlertDialog2();的程式碼:


protected void showAlertDialog2() {
		
		AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
		builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle("請選擇性別:");
//		builder.setMessage("你確定要退出?");
		
		builder.setSingleChoiceItems(sex, 3, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this,"你的性別是:"+sex[which],1000).show();
			}
		});
		
		
		AlertDialog dialog = builder.create();
		dialog.show();
	 }
上面程式碼中buildersetSingleChoiceItems(items, checkedItem, listener);三個引數,第一個引數是儲存單選框裡面內容的陣列,第二個引數是預設選中單選框的第一個選項,第三個是設定監聽器。

第三種是多選按鈕對話方塊,程式碼只是把initEvent方法中的Onclick方法中的showAlertDialog();換成showAlertDialog3();即可.下面貼上showAlertDialog3();的程式碼:

protected void showAlertDialog3() {
		
		AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
		builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle("選擇你的愛好:");
//		builder.setMessage("你確定要退出?");
		
		//此處監聽器使用的是多選按鈕對話方塊
		builder.setMultiChoiceItems(hobby, null, new OnMultiChoiceClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which, boolean isChecked) {
				// TODO Auto-generated method stub
				
				if(isChecked){
					Toast.makeText(MainActivity.this,"你的愛好是:"+hobby[which], 500).show();
				}else {
					Toast.makeText(MainActivity.this,"你不感興趣的是:"+hobby[which], 500).show();
				}
				
			}
		});
		builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				整個對話方塊就會隱藏掉
				dialog.dismiss();
			}
		});
		
		
		AlertDialog dialog = builder.create();
		dialog.show();

	 }
第四種是列表對話方塊,程式碼只是把initEvent方法中的Onclick方法中的showAlertDialog();換成showAlertDialog4();即可.下面貼上showAlertDialog4();的程式碼:
protected void showAlertDialog4() {
		
		AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
		builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle("學校老師:");
		builder.setItems(school, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				
				Toast.makeText(MainActivity.this, "我喜歡"+school[which], 1000).show();
				
			}
		});
		AlertDialog dialog = builder.create();
		dialog.show();
	 }
第五種是自定義對話方塊,還是把initEvent方法中的Onclick方法中的showAlertDialog();換成showAlertDialog5();即可.

此外需要自己自定義一個layout佈局,然後通過LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.user_defined, null);把layout佈局轉成View 物件,然後把view物件新增到AlertDialog對

話框的builder物件中:先看一下效果圖:


貼上程式碼:

protected void showAlertDialog5() {
		LayoutInflater inflater = LayoutInflater.from(this);
		View view = inflater.inflate(R.layout.user_defined, null);
		AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
		builder.setIcon(R.drawable.ic_launcher);
		setTitle("自定義佈局");
		builder.setView(view);
		AlertDialog dialog = builder.create();
		dialog.show();
	 }