我有一个使用Theme.Dialog样式的活动,使其成为另一个活动的浮动窗口。但是,当我在对话框窗口(在背景活动上)之外单击时,对话框关闭。我怎样才能阻止这种行为?阻止Android活动对话框在外部触摸时关闭
回答
这可以帮助你。这是处理触摸事件之外的方式:
How to cancel an Dialog themed like Activity when touched outside the window?
通过捕获的事件,无所事事,我想你可以防止关闭。但是奇怪的是,当你触摸外部时,你的活动对话框的默认行为应该是而不是。
(PS:该代码使用WindowManager.LayoutParams)
该对象虽然不是对话框,但它是使用对话框样式的Activity。活动不具有此方法,并且不能转换为Dialog。 – Fergusmac
好吧,对不起,我误解了,我很快就会更正我的答案 –
我编辑添加我发现可以帮助你 –
什么你实际上有是一种活动(即使它看起来像一个对话框),因此,你应该从你的活动叫setFinishOnTouchOutside(false)
如果你想保持它打开当点击后台活动时。
编辑:这只是与Android API级别工作11或更高
这并不妨碍您在活动中按下“返回”按钮。所以你也需要重写'onBackPressed()'在其正文中无所作为 –
没有在没有onBackPressed()的Activity对话框中阻止“返回”按钮。用this.setFinishOnTouchOutside(false)完美工作。 – Kunalxigxag
效果不错,谢谢 –
什么工作对我来说是创造dialogFragment一组它不会取消:
dialog.setCancelable(假);
没有帮助。这个问题是关于活动,而不是对话框。 –
为了防止对话框从返回键按下的使用越来越驳回了这一
dialog.setCancelable(false);
此外,要防止对话框从外面取得联系驳回使用
dialog.setCanceledOnTouchOutside(false);
这个答案很有帮助,但是这个问题是关于使用Theme.Dialog属性的活动。 –
我知道什么时候我意识到它太晚了,因为它帮助很多人没有删除它。 – Singhak
我知道这并不是真的属于这个问题,但是这对我有帮助。谢谢! – dennisdrew
我面临着同样的问题。为了处理它,我在对话框中设置了一个OntouchListener
,并且什么都不做。但是Dialog在旋转屏幕时也会放弃。为了解决这个问题,我设置了一个变量来告诉我对话框是否正常解除了。然后我设置了一个OnDismissListener
到我的对话框,并在里面检查变量。如果对话框正常排除,我什么都没有,否则我再次运行对话框(并将其状态设置为在我的情况下解散)。
对于更高的API 10,当外部触摸时,对话框消失,而在低于API 11时,对话框不会消失。为了防止这种情况,你需要做的:
在styles.xml
:<item name="android:windowCloseOnTouchOutside">false</item>
OR
在onCreate()
方法,使用:this.setFinishOnTouchOutside(false);
注:API 10以及下,这种方法没有按”没有效果,也不需要。
正是我在找的东西。谢谢! – masterwok
使用setFinishOnTouchOutside(false)
的API> 11,不要担心,因为它的Android的默认行为活动为主题的对话将不会对外界触摸完成了API < 11 :)!Cheerss!
我在onCreate()中使用它,似乎可以在任何Android版本上使用;在5.0和4.4上测试。X,不能在姜饼测试,三星设备(注1运行GB)有它这种方式默认为:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
setFinishOnTouchOutside(false);
}
else
{
getWindow().clearFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
}
super.onCreate(savedInstanceState);
Dialog dialog = new Dialog(context)
dialog.setCanceledOnTouchOutside(true); //use this to dismiss the dialog on outside click of dialog
dialog.setCanceledOnTouchOutside(false); //use this for not to dismiss the dialog on outside click of dialog.
关注有关dialog.
dialog.setCancelable(false);//used to prevent the dismiss of dialog on backpress of that activity
dialog.setCancelable(true);//used to dismiss teh dialog on onbackpressed of that activity
请注意,这个问题涉及用作对话框的活动,而不是Dialog类。 –
不错...非常好...很好看回答:P –
alert.setCancelable(false);
alert.setCanceledOnTouchOutside(false);
此链接查看更多细节
我想这会帮助你。它对我来说
也请尝试解释为什么这将工作...只是代码转储不是一个好的答案。 – Codebender
也可以指定不同的动作im plementing onCancelListener:
alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
@Override
public void onCancel(DialogInterface dialogInterface) {
//Your custom logic
}
});
如何通过点击警报对话框来确定是否调用取消? – cegprakash
设置对话框中取消是假的就足够了,任你摸警告对话框外,或单击后退按钮将使警告对话框消失。所以,用这一个:
setCancelable(false)
而其他功能不再是必需的: dialog.setCanceledOnTouchOutside(false);
如果要创建一个临时对话框,不知道有没有把此行的代码,这里有一个例子:
new AlertDialog.Builder(this)
.setTitle("Trial Version")
.setCancelable(false)
.setMessage("You are using trial version!")
.setIcon(R.drawable.time_left)
.setPositiveButton(android.R.string.yes, null).show();
这里是我的解决方案:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select The Difficulty Level");
builder.setCancelable(false);
builder.setCancelable(假);
公共无效Mensaje(视图v){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("¿Quieres ir a el Menú principal?");
builder.setMessage("Al presionar SI iras a el menú y saldras de la materia.");
builder.setPositiveButton("SI", null);
builder.setNegativeButton("NO", null);
builder.setCancelable(false);
builder.show();
}
嗨,亚历克斯。欢迎来到StackOverflow并感谢您的回答。您能否编辑您的答案来描述您的代码的功能以及如何解决OP的问题?只编码的答案是不鼓励的,因为他们没有教导或解释_why_。谢谢! –
当使用对话框,在OnCreate活动添加此
setFinishOnTouchOutside(false);
简单,
alertDialog.setCancelable(false);
防止点击对话框外的用户。
- 1. Android:在对话框中关闭活动
- 2. 完成(关闭)触摸的Android活动
- 3. 阻止JavaFX对话框关闭
- 4. 如何防止在点击外部时关闭GWT对话框
- 5. 在新活动前关闭对话框
- 6. 如何在外部活动对话框触摸时禁用背景活动行为
- 7. Dojo工具关闭外部对话框
- 8. 当用户在模态对话框外单击时,如何阻止Modal对话框关闭在JQuery UI中?
- 9. 用户触摸屏幕(外部)时如何隐藏对话框?
- 10. 关闭活动完成对话框
- 11. 在Android中关闭对话框而不关闭对话框
- 12. jQuery UI对话框:如何在外部点击时关闭对话框?
- 13. 如何关闭/ dismise活动在android中的对话框类?
- 14. 如何阻止后台活动运行时提醒对话框在运行android
- 15. 防止Android对话框扩展活动
- 16. Android对话框关闭()不关闭
- 17. 的背景图像触摸关闭对话框libgdx
- 18. 点击Android外部对话框关闭它?
- 19. 如何在对话框关闭时反复停止拖动JSON
- 20. Android:创建时关闭对话框
- 21. TagVisualizer - 活动时 - 阻止文本框触摸ScatterViewItem中的键盘焦点
- 22. Android:活动对话框/对话框意外消失
- 23. android:退出应用程序(活动)对话框关闭
- 24. 如何在对话框外触摸时捕捉事件
- 25. 如何在儿童活动(主题:对话框)关闭时刷新活动?
- 26. 允许外部触摸对话框片段
- 27. 对话框自动关闭定时器
- 28. 当屏幕显示关闭时,防止活动接收触摸事件
- 29. Android的外部触摸屏
- 30. 有条件地阻止确定按钮关闭对话框
为什么你会那样做顺便说一句。如果你想要的行为是对话框,为什么不使用对话框?回答你的问题,我认为没有解决方案。 –
@KumarBibek对话框在布局定制时受到限制......这就是为什么一个活动。即使开发人员文档也建议使用这种方法进行灵活的定制 – Leo
而OP需要的是一个** Modal **对话框,即强制用户响应的对话框,例如OK或Yes/No。用户不应该只能点击一下。 –