●實作練習:預期畫面
●實作練習:xml
(一)values/array.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="array">
<item>我知道</item>
<item>你少來</item>
<item>還用你說嗎</item>
</string-array>
</resources>
(二)activity_main.xml
<Button
android:id="@+id/fourbtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="fourbtn"
android:text="項目清單" />
<Button
android:id="@+id/fifthbtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="fifthbtn"
android:text="可複選的核取方塊項目" />
<Button
android:id="@+id/sixthbtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="sixthbtn"
android:text="單選的radio按鈕項目" />
●實作練習:java code
//按鈕四會產生項目清單
public void fourbtn(View view) {
final String[] arr=getResources().getStringArray(R.array.array);
//this就是誰要使用這個dialog
//android.R.style.Theme_DeviceDefault_Dialog 指定要用的主題風格
new AlertDialog
.Builder(this,android.R.style.Theme_Holo_Light_Dialog_NoActionBar)
.setTitle("你好帥")
.setItems(arr, new DialogInterface.OnClickListener() {
@Override
//int i是代表陣列中選取的那個項目的索引碼
public void onClick(DialogInterface dialogInterface, int i) {
text.setText(arr[i]);
}
})
.show();
}
public void fifthbtn(View view) {
final String[] arr=getResources().getStringArray(R.array.array);
//建立一個陣列紀錄每個checkbox是否有被選取,陣列長度要和字串長度一樣
final boolean[] selected=new boolean[arr.length];
new AlertDialog
.Builder(this,android.R.style.Theme_Holo_Light_Dialog_NoActionBar)
.setTitle("你超正")
//多選要用setMultiChoiceItems
.setMultiChoiceItems
(arr, selected, new DialogInterface.OnMultiChoiceClickListener() {
@Override
//這邊的onClick是代表每次勾選或取消勾選時執行,
//i代表這次勾選的項目編號,b代表這次勾選的選項狀態
public void onClick
(DialogInterface dialogInterface, int i, boolean b) {
//因為勾選後沒有要執行甚麼程式,所以這邊空白,執行是在ok按鈕按下去才做
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick
(DialogInterface dialogInterface, int which) {
StringBuilder result=new StringBuilder();
//按下ok按鈕後,到selected陣列逐一檢查,如果某個選項is true,
//就把同樣編碼的arr陣列字串丟到stringbuilder中
for(int i=0;i<selected.length;i++){
if(selected[i]){
result.append(arr[i]).append("\n");
}
}
text.setText(result);
}
})
.setNegativeButton
("CANCEL", new DialogInterface.OnClickListener() {
@Override//cancelbutton沒有其他動作
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.show();
}
//mChoice用來記錄被選取的選項,因為selectN(被選取選項的編號)是一個區域變數,沒
//辦法丟給ok的onclick,所以要丟給一個全域變數來記錄
private int mChoice;
public void sixthbtn(View view) {
final String[] arr=getResources().getStringArray(R.array.array);
mChoice=0;
new AlertDialog.Builder(this)
.setTitle("你好美")
//單一選項用setSingleChoiceItems,第二個參數是被選取選項的編號
.setSingleChoiceItems
(arr, mChoice, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int selectN) {
mChoice=selectN;
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
text.setText(arr[mChoice]);
}
})
.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
text.setText("算了吧");
}
})
.show();
}
*程式參考(gitHub):AlertDialog實作
文章標籤
全站熱搜
留言列表