Android彈出對話框時,默認情況下無論點擊哪個button,觸發事件後對話框都會自動關閉。
可以利用反射機制,使觸發按鈕點擊事件之後不退出對話框。
解決方法:在setButton的OnClickListener的OnClick裡改變field,filed的改變對於該對象來說是全局的,所以想要關閉時也要添加代碼。
不退出對話框:
-
.setPositiveButton("開始測試", new DialogInterface.OnClickListener(){
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- ; try
- {
- Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
- field.setAccessible(true);
- //設置mShowing值,欺騙android系統
- field.set(dialog, false);
- }catch(Exception e) {
- e.printStackTrace();
- }
- }
-
- })
點擊退出對話框:
- .setNegativeButton("退出測試", new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- try
- {
- Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
- field.setAccessible(true);
- //設置mShowing值,欺騙android系統
- field.set(dialog, true);
- } catch(Exception e) {
- e.printStackTrace();
- }
-
- }
- })