Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中阻止AlertDialog關閉實例代碼

Android中阻止AlertDialog關閉實例代碼

編輯:關於Android編程

Android如何關閉AlertDialog.Builder對話框呢?AlertDialog.Builder對話框沒有類似finish()或者dismiss()這樣的方法。

但是它的父類AlertDialog有dismiss方法,而且AlertDialog.Builder在.show()的時候會得到一個AlertDialog對象,我們就可以用dismiss方法將該Builder關閉。

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
AlertDialog dialog = builder.show(); 
dialog.dismiss(); 

關於Android阻止AlertDialog關閉具體代碼如下所示:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("測試");
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialogfragment_num_input, null);
builder.setView(view);
builder.setPositiveButton("確定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
Field field = null;
try {
//通過反射獲取dialog中的私有屬性mShowing
field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);//設置該屬性可以訪問
} catch (Exception ex) {
}
String inputValue = String.valueOf(mEdit.getText());
if (inputValue == null || "".equals(inputValue)) {
try {
//設置dialog不可關閉
field.set(dialog, false);
dialog.dismiss();
} catch (Exception ex) {
}
} else {
//
//做自己的事
//
try {
//關閉
field.set(dialog, true);
dialog.dismiss();
} catch (Exception ex) {
}
}
}
});
builder.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
Field field = null;
try {
//通過反射獲取dialog中的私有屬性mShowing
field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);//設置該屬性可以訪問
} catch (Exception ex) {
}
try {
field.set(dialog, true);
dialog.dismiss();
} catch (Exception ex) {
}
}
});
builder.create();

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved