Android阻止AlertDialog關閉


 1 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
 2 builder.setTitle("測試");
 3 
 4 LayoutInflater inflater = getActivity().getLayoutInflater();
 5 View view = inflater.inflate(R.layout.dialogfragment_num_input, null);
 6 builder.setView(view);
 7 
 8 builder.setPositiveButton("確定",
 9         new DialogInterface.OnClickListener() {
10             @Override
11             public void onClick(DialogInterface dialog, int id) {
12 
13                 Field field = null;
14 
15                 try {
16                     //通過反射獲取dialog中的私有屬性mShowing
17                     field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
18                     field.setAccessible(true);//設置該屬性可以訪問
19                 } catch (Exception ex) {
20 
21                 }
22 
23                 String inputValue = String.valueOf(mEdit.getText());
24                 if (inputValue == null || "".equals(inputValue)) {
25                     try {
26                         //設置dialog不可關閉
27                         field.set(dialog, false);
28                         dialog.dismiss();
29                     } catch (Exception ex) {
30                     }
31                 } else {
32 
33                    //
34                    //做自己的事
35                    //
36                     try {
37                         //關閉
38                         field.set(dialog, true);
39                         dialog.dismiss();
40                     } catch (Exception ex) {
41                     }
42                 }
43             }
44         });
45 builder.setNegativeButton("取消",
46         new DialogInterface.OnClickListener() {
47             @Override
48             public void onClick(DialogInterface dialog, int id) {
49 
50                 Field field = null;
51 
52                 try {
53                     //通過反射獲取dialog中的私有屬性mShowing
54                     field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
55                     field.setAccessible(true);//設置該屬性可以訪問
56                 } catch (Exception ex) {
57                 }
58 
59                 try {
60                     field.set(dialog, true);
61                     dialog.dismiss();
62                 } catch (Exception ex) {
63                 }
64 
65             }
66         });
67 
68 
69 builder.create();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM