18个解决方案

327 votes

要防止对话框在按下后退键时被解除,请使用此选项

dialog.setCancelable(false);

并且为防止对话框在外部触摸时被解雇,请使用此功能

dialog.setCanceledOnTouchOutside(false);

Singhak answered 2019-03-28T22:08:28Z

108 votes

你实际拥有的是一个Activity(即使它看起来像一个Dialog),因此如果你想在单击后台活动时保持它打开,你应该从你的活动中调用setFinishOnTouchOutside(false)。

编辑:这仅适用于Android API等级11或更高版本

artex answered 2019-03-28T22:08:59Z

39 votes

对我有用的是创建DialogFragment设置它不可取消:

dialog.setCancelable(false);

Petr answered 2019-03-28T22:09:23Z

31 votes

这可以帮到你。 这是一种处理外部触摸事件的方法:

如何在窗外触摸时取消以Activity为主题的对话框?

通过捕捉事件并无所事事,我认为你可以阻止关闭。 但奇怪的是,当您触摸外部时,活动对话框的默认行为应该不会自行关闭。

(PS:代码使用WindowManager.LayoutParams)

Michel-F. Portzert answered 2019-03-28T22:07:57Z

17 votes

对于更高的API 10,Dialog在触摸外部时消失,而在低于API 11时,Dialog不会消失。 为防止这种情况,您需要:

在styles.xml:onCreate()

要么

在onCreate()方法中,使用:this.setFinishOnTouchOutside(false);

注意:对于API 10及更低版本,此方法无效,不需要。

Andreyua answered 2019-03-28T22:10:12Z

11 votes

使用此代码它对我有用

AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);

alertDialog.setCancelable(false);

Aslam Patel answered 2019-03-28T22:10:40Z

11 votes

将对话框用作onCreate中的活动时添加此项

setFinishOnTouchOutside(false);

Ronny Shibley answered 2019-03-28T22:11:06Z

11 votes

将对话框可取消设置为false就足够了,无论是在警报对话框外触摸还是单击后退按钮都会使警报对话框消失。 所以使用这个:

dialog.setCanceledOnTouchOutside(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();

BillOverFlow answered 2019-03-28T22:11:51Z

9 votes

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.setCancelable(false);

//used to prevent the dismiss of dialog on backpress of that activity

dialog.setCancelable(true);

//used to dismiss the dialog on onbackpressed of that activity

anand krish answered 2019-03-28T22:12:16Z

7 votes

只是,

alertDialog.setCancelable(false);

防止用户在对话框外单击。

answered 2019-03-28T22:12:43Z

5 votes

使用setFinishOnTouchOutside(false)获取API> 11并且不要担心因为它的android的默认行为,活动主题对话框将无法在外部触摸上完成API< 11 :) !!干杯!

Vishal Pandey answered 2019-03-28T22:13:08Z

5 votes

我在onCreate()中使用它,似乎适用于任何版本的Android; 在5.0和4.4.x上测试过,无法在Gingerbread上测试,三星设备(运行GB的注1)默认情况下是这样的:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)

{

setFinishOnTouchOutside(false);

}

else

{

getWindow().clearFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);

}

super.onCreate(savedInstanceState);

3c71 answered 2019-03-28T22:13:36Z

3 votes

alert.setCancelable(false);

alert.setCanceledOnTouchOutside(false);

我想这会对你有帮助。它为我工作

user2532065 answered 2019-03-28T22:14:01Z

3 votes

这是我的解决方案:

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Select The Difficulty Level");

builder.setCancelable(false);

Akhter Alamin Farhan answered 2019-03-28T22:14:21Z

1 votes

我遇到了同样的问题。 为了处理它,我在对话框中设置了OntouchListener,并且什么也没做。 但是在旋转屏幕时Dialog也会被忽略。 为了解决这个问题,我设置了一个变量来告诉我对话框是否正常被解雇。 然后我在我的对话框中设置了一个OnDismissListener,在里面检查变量。 如果对话框通常不正常,我不会,或者我再次运行对话框(并设置他的状态,就像在我的情况下解雇)。

Madara answered 2019-03-28T22:14:48Z

1 votes

也可以分配实现onCancelListener的不同动作:

alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){

@Override

public void onCancel(DialogInterface dialogInterface) {

//Your custom logic

}

});

Adae Rodríguez answered 2019-03-28T22:15:14Z

1 votes

builder.setCancelable(假);

public void 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();

}

-2 votes

这是您所有问题的完美答案....希望您喜欢Android中的编码

new AlertDialog.Builder(this)

.setTitle("Akshat Rastogi Is Great")

.setCancelable(false)

.setMessage("I am the best Android Programmer")

.setPositiveButton("I agree", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

})

.create().show();

Akshat Rasogi answered 2019-03-28T22:16:14Z

java android对话框_java - 防止Android活动对话框关闭外部触摸相关推荐

  1. java姓名排序_java、android拼音,中文姓名排序

    http://blog.sina.com.cn/s/blog_81a9aa7e0100tizj.html 在java或者是android编程的时候,我们经常要用到对姓名或者其他字符串排序,现在我写写自 ...

  2. java隐藏密钥_java – 在Android中隐藏密钥库密码的最佳方法是什么?

    我是Android开发和实现SSLSockets的新手.在做了一些挖掘后,我能够设置一个正常工作的简单服务器/客户端.我认为实现可以使用一些工作,并且难以将密码加载到密钥库而不用纯文本.这是客户端的一 ...

  3. java中如何创建对话框_Java – 如何创建自定义对话框?

    如果你不需要太多的自定义行为的方式,JOptionPane是一个很好的时间保护.它负责确定/取消选项的放置和本地化,并且是一种快速而又脏的方式来显示自定义对话框,而不需要定义自己的类.大多数时候,JO ...

  4. java swing对话框_java Swing中弹出对话框的几种方式

    通过导入JOptionPane类来实现弹出对话框的功能 import javax.swing.JOptionPane; 大体分为四类:ConfirmDialog //确认对话框,由用户来确认(比如按& ...

  5. 如何自己制作java对话框_java中的卡片式对话框如何制作

    在本章的前部,向我们介绍了老式的CardLayout,并且注意到我们怎样去管理我们所有的卡片开关.有趣的是,有人现在认为这是一种不错的设计.幸运的是,Swing用JTabbedPane对它进行了修补, ...

  6. swing 选择对话框_Java Swing –日期选择器对话框

    swing 选择对话框 房子里有Swing开发人员吗? 对于使用Swing的用户来说,这是一个GUI组件,可能会对您的UI编码工作有所帮助. 我们的JCG合作伙伴之一提供了日期选择器小部件. 看看这个 ...

  7. java监控对话框是否关闭_java – 检查是否可以安全地关闭对话框

    在我的应用程序中,我在长时间运行的后台进程中显示一个对话框,这是一个模态. android从后台任务返回时,该对话框被解除. final ProgressDialog progressDialog = ...

  8. Android开发中如何创建自定义对话框

    背景: 无论是Android,还是其他什么平台,对话框的主要形式都是弹出,或者我们可以说是一个在当前活动中打开的提示,来执行一些操作或实现一些功能. 你可以用一个对话框来问用户以确认一个行动,向用户通 ...

  9. android 之Dialog的多种Dialog对话框(以及反射在自定义对话框的运用)

    实际效果: 实例代码: 一个"启动初始Activity.xml" 一个弹出的Activity 业务逻辑代码: package com.hsj.example.alertdialog ...

最新文章

  1. Python并非为AI而生,Golang将统治人工智能的下一个十年?
  2. 涨姿势:Java 异常?尝试自定义异常
  3. 使用report BSP_UPDATE_MIMEREPOS 批量上传mime object
  4. Linux 信号量 生产者消费者小例题
  5. 一个看似是系统问题的应用问题的解决过程
  6. [转]由自助餐想到软件团队的管理
  7. 【Java编程思想笔记】-集合1
  8. 力扣题目——143. 重排链表
  9. 计算机网络超详细笔记(五):网络层
  10. 火力发电行业三大知识图谱应用场景,助力火力发电厂清洁高效智慧化运营
  11. Java设计模式之观察者模式应用与实战
  12. 2017年1月20日参加培训-《如何做好向上汇报》
  13. 区块链技术及实际应用
  14. 在Windows 7 Media Center中收听本地FM广播
  15. DW1000学习之路(三)--------DW1000的中断处理问题
  16. IMAX [生活时尚]
  17. PPP协议使用同步传输技术传送比特串0110111111111100。试问经过零比特填充后变成怎样的比特串?若接收端收到的PPP帧的数据部分是0001110111110111110110,问删除发送端
  18. Android 备忘录模式
  19. Java中的Properties属性集合
  20. html5网页中加入播放器,10款jquery+html5实现的网页播放器

热门文章

  1. String类型转化为Double类型以及java代码去除金额千分号
  2. 判断一棵树是否是另一棵树的子树(Java实现)
  3. linux安装南大通用数据库 GBase 8s V8.8
  4. 三叉戟核武系统扛不住网络攻击 解决之道在于投入成本
  5. Java基础总结(内部版)
  6. 【转载】Android微信智能心跳方案
  7. github特殊的查找资源小技巧
  8. 常用电脑硬件技术术语集锦
  9. python round(1234.5678、-2)_Python中你不知道的特性
  10. LabVIEW编程LabVIEW控制TC-XSM例程与相关资料