編輯:關於Android編程
看了很多關於AlertDialog的文章,很少提起復用的問題
一般情況下整齊一點的調用只有下面這樣:
1、定義final標志
[html]
final int TIME_DIALOG = 1, REPEAT_DIALOG = 2, EVERY_DIALOG = 3,
DATE_DIALOG2 = 4;
final int TIME_DIALOG = 1, REPEAT_DIALOG = 2, EVERY_DIALOG = 3,
DATE_DIALOG2 = 4;
2、准備生成Dialog方法
[html]
/**
* 創建對話框
*/
@Override
public Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
/**
* 開始
*/
case TIME_DIALOG:
//處理邏輯
break;
default:
break;
}
return dialog;
}
/**
* 創建對話框
*/
@Override
public Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
/**
* 開始
*/
case TIME_DIALOG:
//處理邏輯
break;
default:
break;
}
return dialog;
}
2、在方法中調用
[html]
/**
* 時間按鈕點擊事件
*/
btntime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG);
}
});
/**
* 重復按鈕點擊事件
*/
btnrepeat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(REPEAT_DIALOG);
}
});
/**
* 時間按鈕點擊事件
*/
btntime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG);
}
});
/**
* 重復按鈕點擊事件
*/
btnrepeat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(REPEAT_DIALOG);
}
});
但實際上,這樣仍然需要創建多個dialog,不能實現dialog的復用在下經常長時間研究,終於想出如下辦法:
1、調用創建方法
[html]
case R.id.contact_batch_del:
openDialog(AppData.DIALOG1);
break;
case R.id.contact_batch_star:
openDialog(AppData.DIALOG2);
break;
case R.id.contact_batch_del:
openDialog(AppData.DIALOG1);
break;
case R.id.contact_batch_star:
openDialog(AppData.DIALOG2);
break;
2、創建dialog
[html]
public void openDialog(final int id) {
new AlertDialog.Builder(context)
.setPositiveButton(R.string.contact_ok, new
DialogInterface.OnClickListener() {
public void onClick
(DialogInterface dialog, int
whichButton) {
/*
* User
*
* clicked OK so do some stuff
*/
doBatch(id);
}
}).setNegativeButton(R.string.contact_cancel, new
DialogInterface.OnClickListener() {
public void onClick
(DialogInterface dialog, int
whichButton) {
/*
* User
*
* clicked Cancel so do some stuff
*/
dialog.dismiss();
}
}).create().show();
}
public void openDialog(final int id) {
new AlertDialog.Builder(context)
.setPositiveButton(R.string.contact_ok, new
DialogInterface.OnClickListener() {
public void onClick
(DialogInterface dialog, int
whichButton) {
/*
* User
*
* clicked OK so do some stuff
*/
doBatch(id);
}
}).setNegativeButton(R.string.contact_cancel, new
DialogInterface.OnClickListener() {
public void onClick
(DialogInterface dialog, int
whichButton) {
/*
* User
*
* clicked Cancel so do some stuff
*/
dialog.dismiss();
}
}).create().show();
}
3、執行內部方法
[html]
public void doBatch(int id) {
switch (id) {
case AppData.DIALOG1:
int count = oaController.delContactList(chosenList);
Tools.showToast(context, "有" + count + "個聯系人被處理!");
break;
case AppData.DIALOG2:
count = oaController.starContactList(chosenList);
Tools.showToast(context, "有" + count + "個聯系人被處理!");
break;
default:
break;
}
}
public void doBatch(int id) {
switch (id) {
case AppData.DIALOG1:
int count = oaController.delContactList(chosenList);
Tools.showToast(context, "有" + count + "個聯系人被處理!");
break;
case AppData.DIALOG2:
count = oaController.starContactList(chosenList);
Tools.showToast(context, "有" + count + "個聯系人被處理!");
break;
default:
break;
}
}
如此以來,大功告成!
本人特別喜歡整齊而又簡單的代碼,復用性強。
本博出自博主手書,轉載請說明出處,以規避法律責任!謝謝合作!
一、Git 與GitHub這裡首先介紹下Git與GitHub是什麼東西,他們之間有何區別呢?Git :分布式版本控制系統,最初用在Linux上,可以和SVN、CVS等作為
ProgressDialog類似於ProgressBar類。用於顯示一個過程,通常用於耗時操作。 幾個方法介紹:1.setMax()設置對話框中進度條的最大值。
Action Bar介紹Action Bar 是Google 在Android 3.0之後推出的一種全新用戶操作方式 目的是用來替換掉菜單按鍵功能,長按操作功能,提供一種
前言尋尋覓覓終於等到你,Material Design系列BottomBar開源庫你值得擁有。從我接觸android開發遇到tabhost,到radioGroup+Vie