●實作練習:預期畫面
●補充說明:
(一)AlertDialog 選擇support會比較好,因為會支援舊版的android系統
(二) 這個方塊告訴我們setPositiveButton()中的兩個參數放甚麼!
(三)當匿名類別使用外部的變數時,因為考量到匿名類別的生命週期和外部變數可能會不一樣,所以要把被使用到的外部變數宣告為final,而匿名類別會自動把該變數copy下來
●實作練習:xml
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="@android:color/background_dark"
android:layout_gravity="center"
android:text="Hello World!"/>
<Button
android:id="@+id/ok"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="一個按鈕"
android:onClick="ok"/>
<Button
android:id="@+id/secondbtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="兩個按鈕"
android:onClick="secondbtn"/>
<Button
android:id="@+id/thirdbtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="三個按鈕"
android:onClick="thirdbtn"/>
●實作練習:java code
=>MainActivity 要先implements DialogInterface.OnClickListener
public void ok(View view) {
//打造的對話框使用當前的activity主題顏色
new AlertDialog.Builder(this)
.setMessage("你好帥喔")
//將此按鈕事件委託給當前的activity
.setPositiveButton("我知道",this)
.show();
}
@Override
//第一個按鈕的postiveButton的onClick method
public void onClick(DialogInterface dialogInterface, int i) {
text.setText("我知道");
}
//按下secondbtn,要將兩個按鈕交給同一個alert a物件處理
public void secondbtn(View view) {
alert a=new alert();
new AlertDialog.Builder(this)
.setMessage("你好帥喔")
.setPositiveButton("謝謝",a)
.setNegativeButton("狗腿",a)
.show();
}
//這邊將第個二按鈕的對話框按鈕事件委託給內部類別alert
private class alert implements AlertDialog.OnClickListener{
@Override
public void onClick(DialogInterface dialogInterface, int i) {
switch (i){
//DialogInterface.BUTTON_POSITIVE會是一個整數,類似R.id的作法
case DialogInterface.BUTTON_POSITIVE:
text.setText("謝謝");
break;
case DialogInterface.BUTTON_NEGATIVE:
text.setText("狗腿");
break;
}
}
}
//當第三個按鈕按下去時,用匿名類別直接實作程式碼,不再另外寫一個類別,當裡面的程式很簡單的時候適用
public void thirdbtn(View view) {
new AlertDialog.Builder(this)
.setMessage("你好帥喔")
.setPositiveButton("謝謝讚美", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
text.setText("謝謝讚美");
}
})
.setNegativeButton("太狗腿了", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
text.setText("太狗腿了");
}
})
.setNeutralButton("無言", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
text.setText("無言");
}
})
.show();
}
*程式參考(gitHub):AlertDialog實作
文章標籤
全站熱搜
留言列表