1. 程式人生 > >Android之AlerDialog實現對話方塊

Android之AlerDialog實現對話方塊

AlerDialog在一個子類可以顯示一個對話方塊,兩個或三個按鈕。如果你只是想顯示一個字串在這個對話方塊中,使用setMessage()方法。如果你想顯示一個更復雜的檢視,查詢FrameLayout叫做“定製”並新增你的檢視:

 

 

對AlerDialog是現實了、普通對話方塊,列表對話方塊,單選對話方塊,以及多選對話方塊。在java檔案裡一定要寫AlerDialog的實現方法

builder.create().show();不然AlerDialog不起作用,但是程式也不報錯,很難發現。

 

activity_main.xml檔案

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.a13468.mydemo18_alerdialog.MainActivity"
    >

    <Button
        android:id="@+id/btn1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#0c13ed"
        android:background="#00ff8c"
        android:textSize="25sp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="20dp"
        android:onClick="doBtn1"
        android:text="顯示帶取消,確定按鈕的對話方塊"/>
    <Button
        android:id="@+id/btn2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#ed5e0c"
        android:background="#500de2"
        android:textSize="30sp"
        android:onClick="doBtn2"
        android:layout_marginBottom="20dp"
        android:text="顯示帶列表的對話方塊"/>

    <Button
        android:id="@+id/btn3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#0cdeed"
        android:background="#ddff00"
        android:textSize="30sp"
        android:onClick="doBtn3"
        android:layout_marginBottom="20dp"
        android:text="顯示帶單選列表項的對話方塊"/>

    <Button
        android:id="@+id/btn4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#0cdeed"
        android:background="#ff2f00"
        android:textSize="30sp"
        android:onClick="doBtn4"
        android:layout_marginBottom="20dp"
        android:text="顯示帶多選列表的對話方塊"/>

</LinearLayout>

 MainActivity.java檔案:

package com.example.a13468.mydemo18_alerdialog;
/**
 * AlerDialog實現對話方塊
 */

import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends Activity {
    private Button btn1;
    private Button btn2;
    private Button btn3;
    private Button btn4;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn1=findViewById(R.id.btn1);
        btn2=findViewById(R.id.btn2);
        btn3=findViewById(R.id.btn3);
        btn4=findViewById(R.id.btn4);




        /**
         * 顯示列表對話方塊
         */
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //建立AlerDialgo方法且例項化
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                final String[]items=new String[]{"百度","騰訊","阿里巴巴","華為"};//建立列表類容
                builder.setIcon(R.mipmap.logo);//新增圖示
                builder.setTitle("你喜歡哪家公司?");//新增開頭
                //新增列表項
                builder.setItems(items, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "你選擇了"+items[i]+"公司", Toast.LENGTH_SHORT).show();
                    }
                });
                builder.create().show();
            }

        });

        /**
         * 顯示帶單選按鈕的列表對話方塊
         */
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //建立AlerDialog方法且例項化
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                final String items[]=new String[]{"趙","錢","李","孫","秦"};//建立列表內容
                builder.setIcon(R.mipmap.logo);//新增圖示
                builder.setTitle("您姓什麼");//新增標題
                builder.setPositiveButton("確定",null);//新增確定按鈕,null表示沒有對按鈕設定監聽
                //新增列表項
                builder.setItems(items, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "你選擇的姓是【"+items[i]+"】", Toast.LENGTH_SHORT).show();
                    }
                });

                builder.create().show();
            }
        });


        /**
         * 顯示覆選按鈕對話方塊
         */
        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                final boolean Clickitems[]=new boolean[]{false,true,false,false,true};
                final String items[]=new String[]{"電影","跑步","看書","唱歌","程式設計"};
                builder.setIcon(R.mipmap.logo);
                builder.setTitle("你有什麼愛好?");
                //新增列表項
                builder.setMultiChoiceItems(items,Clickitems, new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i, boolean b) {

                        Clickitems[i]=b;//改變被操作列表項的狀態

                    }
                });
                //新增確定按鈕
                builder.setPositiveButton("確定", new DatePickerDialog.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        String result="";//記錄結果
                        for(int a=0;a<Clickitems.length;a++){
                            if(Clickitems[a]){
                                result+=items[a];//把列表類容,新增到result中
                            }

                        }
                        if(!"".equals(result)){
                            Toast.makeText(MainActivity.this, "你選擇了【"+result+"】", Toast.LENGTH_SHORT).show();
                        }
                    }
                });

                builder.create().show();
            }
        });


    }
    /**
     * 取消確定按鈕對話方塊(普通對話方塊)
     * @param v
     */
    public void doBtn1(View v ){
        AlertDialog alertDialog=new AlertDialog.Builder(MainActivity.this).create();//建立AlerDialog物件且例項化
        alertDialog.setIcon(R.mipmap.logo);//設定圖示
        alertDialog.setTitle("AlerDialog");//設定標題
        alertDialog.setMessage("你真的要退出嗎");//設定內容
        alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "確定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "您好狠心!!", Toast.LENGTH_SHORT).show();
            }
        });//確定按鈕
        alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, "看來您是愛我的", Toast.LENGTH_SHORT).show();
            }
        });//新增取消按鈕
        alertDialog.show();
    }


}