安卓開發5- AlertDialog的使用

採用AlertDialog的自定義佈局方式實現設置交互,新建android layout佈局後,採用LayoutInflater是用來得到佈局文件對象,經過AlertDialog.Builder.setView().show()方式實現自定義佈局對話框的打開。比起以前「開發webapp的準備工做」中使用intent打開一個activity的方式,AlertDialog實現更輕鬆,交互更友好。android

 

新建android xml layout fileweb

         New – android – android xml layout file – 名稱爲「layout_set」,實現OA的訪問地址、是否須要提醒、是否須要聲音提醒、振動提醒等設置。這裏我用了一個TableLayout,加入一個EditText和3個Checkbox。代碼以下:app

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"webapp

    android:id="@+id/TableLayout1"佈局

    android:layout_width="match_parent"ui

    android:layout_height="match_parent"this

    android:orientation="vertical" >url

 

    <TextViewxml

        android:id="@+id/textView1"對象

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="登錄網址" />

 

    <EditText

        android:id="@+id/editText_url"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:ems="10" >

 

        <requestFocus />

    </EditText>

 

    <CheckBox

        android:id="@+id/checkBox_alert"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="有消息是否提醒" />

 

    <CheckBox

        android:id="@+id/checkBox_vibrate"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="振動提醒" />

 

    <CheckBox

        android:id="@+id/checkBox_sound"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="聲音提醒" />

 

</TableLayout>

         這裏將用AlertDialog方式打開,不須要增長button。

 

打開AlertDialog

         在菜單onOptionsItemSelected的「設置」部分增長打開的代碼,並實現讀取EditText和CheckBox的值,採用SharedPreferences保存。CheckBox是否被選中用isChecked() ,選中用setChecked(Boolean)。alertDialog的建立代碼以下,其中「layout_set」是我建立的佈局文件名稱,「TableLayout1」是佈局文件的layout id。爲了能在「肯定」的OnClickListener匿名內部類中調用外部變量dialogLayout,dialogLayout須要用final修飾.

         LayoutInflater inflater = getLayoutInflater();

         final View dialogLayout = inflater.inflate(R.layout.layout_set, (ViewGroup)findViewById(R.id.TableLayout1));

 

         new AlertDialog.Builder(this).setTitle("設置").setView(dialogLayout)

         .setPositiveButton("肯定", new OnClickListener() {

                   public void onClick(DialogInterface dialog, int which) {

                            //得到EditText和CheckBox的值,採用SharedPreferences保存。

 

                            dialog.dismiss();

                   }

         })

         .setegativeButton("取消", null).show();

 

關於AlertDialog

我曾經嘗試在AlertDialog.Builder builder = new AlertDialog.Builder(this);以後,一口氣加完setTitle、setMessage、setView(EditText)、setMultiChoiceItems、setSingleChoiceItems、setItems,結果只出現EditText,而沒有單選多選,研究後發如今 AlertDialog中setMessage、setMultiChoiceItems等只能一個有效,所以複雜的交互內容只能用setView的自定義佈局方式。

相關文章
相關標籤/搜索