歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android點擊AlertDialog的button不退出對話框的方法

Android彈出對話框時,默認情況下無論點擊哪個button,觸發事件後對話框都會自動關閉。

可以利用反射機制,使觸發按鈕點擊事件之後不退出對話框。

解決方法:在setButton的OnClickListener的OnClick裡改變field,filed的改變對於該對象來說是全局的,所以想要關閉時也要添加代碼。

不退出對話框:

  1. .setPositiveButton("開始測試",  new  DialogInterface.OnClickListener(){  
  2.   
  3.        @Override  
  4.        public void onClick(DialogInterface dialog, int which) {                   
  5. ;               try  
  6.            {  
  7.                Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");  
  8.                field.setAccessible(true);  
  9.                 //設置mShowing值,欺騙android系統   
  10.                field.set(dialog, false);  
  11.            }catch(Exception e) {  
  12.                e.printStackTrace();  
  13.            }  
  14.        }  
  15.   
  16.    })  

點擊退出對話框:

  1. .setNegativeButton("退出測試"new DialogInterface.OnClickListener() {  
  2.   
  3.     @Override  
  4.     public void onClick(DialogInterface dialog, int which) {  
  5.         // TODO Auto-generated method stub   
  6.         try  
  7.         {  
  8.             Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");  
  9.             field.setAccessible(true);  
  10.              //設置mShowing值,欺騙android系統   
  11.             field.set(dialog, true);  
  12.         } catch(Exception e) {  
  13.             e.printStackTrace();  
  14.         }  
  15.   
  16.     }  
  17. })  
Copyright © Linux教程網 All Rights Reserved