原理:反射
注意事项:假如已经disable自动dismiss状态,需要重新enableColse()再手动调用dismiss(),不然程序会报错。
private void disableClose(Dialog dialog)
{
isDisable = true;
try
{
Field field = dialog.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, false);
} catch (Exception e)
{
e.printStackTrace();
}
}
private void enableColse(Dialog dialog)
{
isDisable = false;
try
{
Field field = dialog.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, true);
} catch (Exception e)
{
e.printStackTrace();
}
}
在Onclick事件里调用
.setPositiveButton(R.string.text_setting,
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,
int whichButton)
{
disableClose(mNetSettingDig);
}
})