1. 程式人生 > >Android 實現單選對話方塊

Android 實現單選對話方塊

專案中有一次用到了單選對話方塊,突然發現因為許久不用,我竟然對這樣一個小小的知識點有點陌生,這還得了?正好最近打算開始寫自己的部落格,不為其他,只為記錄自己的成長,就從這一篇開始吧!

具體實現步驟如下:
1.宣告一個全域性陣列,作為對話方塊列表的內容

String[] Items = {"Java","Android","C","H5","JS"};

當然,我們也可以在xml檔案中設定其列表選項:res/values目錄下新建array.xml檔案,檔案內容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="hobby">
        <item>Java</item>
        <item>Android</item>
        <item>C</item>
        <item>H5</item>
        <item>JS</item>
    </string-array>
</resources>

2.定義一個佈局檔案,內容很簡單隻有一個按鈕,當點選按鈕時彈出單選對話方塊。

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

    <Button
        android:id="@+id/btn_single"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="彈出單選對話方塊"/>

</LinearLayout>

3.建立一個單選列表對話方塊,注意此處必須要借用AlertDialog.Builder作為對話方塊內容的載體,主要程式碼如下:

private void ShowSingleDialog() {
    TempWhich = 0; //TempWhich表示選擇的Item位置,預設為0
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setIcon(R.mipmap.ic_launcher); //設定圖示
    builder.setTitle("請選擇喜歡的開發語言:"); //設定標題
    builder.setCancelable(false); //設定是否可以點選對話方塊外部取消,false表示不能,true表示能

    //點選選擇Item監聽
    builder.setSingleChoiceItems(R.array.hobby, 0, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            String hobby = getResources().getStringArray(R.array.hobby)[which];
            TempWhich = which;
            Toast.makeText(DialogActivity.this, "您選擇了" + which , Toast.LENGTH_SHORT).show();
        }
    });
    //確定按鈕監聽
    builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //此處Which一直返回-1,故需要借用TempWhich
            switch (TempWhich){
                case 0:
                    Toast.makeText(DialogActivity.this, "您選擇了JAVA" , Toast.LENGTH_SHORT).show();
                    break;
                case 1:
                    Toast.makeText(DialogActivity.this, "您選擇了Android" , Toast.LENGTH_SHORT).show();
                    break;
                case 2:
                    Toast.makeText(DialogActivity.this, "您選擇了C" , Toast.LENGTH_SHORT).show();
                    break;
                default:
                    Toast.makeText(DialogActivity.this, "您選擇了其他" , Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    });
    //取消按鈕監聽
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //此處新增取消按鈕的點選邏輯
        }
    });

    //還可以設定一個Neutral按鈕,表示中立
    builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //此處新增忽略按鈕的點選邏輯
        }
    });

    builder.show();
}

4.效果圖在此就不展示了,有興趣的童鞋可以試一下。