(1)普通對話框
// 點擊按鈕 彈出一個普通對話框public void click1(View v) {// 構建AlertDialogAlertDialog.Builder builder = new Builder(this);builder.setTitle("警告");builder.setMessage("世界上最遙遠的距離是沒有網絡");builder.setPositiveButton("確定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {System.out.println("點擊了確定按鈕 執行的邏輯");}});builder.setNegativeButton("取消", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {System.out.println("點擊了取消按鈕");}});// 最后一步一定要記得 show出來
builder.show();}
(2)單選對話框
// 點擊按鈕 彈出一個單選對話框public void click2(View v) {// 構建AlertDialogAlertDialog.Builder builder = new Builder(this);builder.setTitle("請選擇您喜歡的課");final String items[] = { "Android", "ios", "php", "c", "C++", "html" };builder.setSingleChoiceItems(items, -1, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 取出點中的條目String item = items[which];Toast.makeText(getApplicationContext(), item, 1).show();// 關閉當前對話框
dialog.dismiss();}});// 最后一步一定要記得 show出來
builder.show();}
(3)多選對話框
// 點擊按鈕 彈出一個多選對話框public void click3(View v) {// 構建AlertDialogAlertDialog.Builder builder = new Builder(this);builder.setTitle("請選擇您喜歡吃的水果");final String items[] = { "榴蓮", "蘋果", "葡萄", "香蕉", "黃瓜", "火龍果", "荔枝" };final boolean[] checkedItems = { true, false, false, false, false,false, true };builder.setMultiChoiceItems(items, checkedItems,new OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which,boolean isChecked) {}});builder.setPositiveButton("確定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {StringBuffer sb = new StringBuffer();// [1]把你選中的水果給取出來for (int i = 0; i < checkedItems.length; i++) {if (checkedItems[i]) {// 就證明是選中的String fruit = items[i];sb.append(fruit + " ");}}Toast.makeText(getApplicationContext(), sb.toString(), 1).show();// 關閉對話框
dialog.dismiss();}});// 最后一步一定要記得 show出來
builder.show();}
(4)進度條對話框
//進度條對話框public void click4(View v) {//與進度相關的控件都可以直接在子線程更新ui final ProgressDialog dialog = new ProgressDialog(this);dialog.setTitle("正在玩命加載ing");dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);dialog.show();//設置進度條的最大值 dialog.setMax(100);new Thread(){public void run() {for (int i = 0; i <= 100; i++) {//設置當前的進度
SystemClock.sleep(50);//睡眠50毫秒
dialog.setProgress(i);}//關閉對話框
dialog.dismiss();};}.start();}
?
補充 2種上下文的區別
this:mainActivity 子類?
getApplicationContext(): 返回Context?父類
對話框不能用getApplicationContext();