首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DialogFragment在活动recreate()之后重新出现,即使在取消它之后也是如此

DialogFragment是Android中的一个类,用于创建对话框式的用户界面。当活动(Activity)发生重新创建(recreate)时,DialogFragment会重新出现,即使在取消它之后也是如此。

DialogFragment的优势在于它可以与活动(Activity)进行解耦,使得对话框的创建和管理更加灵活。它可以独立于活动存在,并且可以在不同的活动中重复使用。此外,DialogFragment还提供了一些生命周期方法,可以方便地管理对话框的显示和隐藏。

DialogFragment的应用场景包括但不限于以下几种:

  1. 弹出对话框:DialogFragment可以用于显示各种类型的对话框,例如提示框、确认框、输入框等。
  2. 日期选择器和时间选择器:DialogFragment可以用于显示日期选择器和时间选择器,方便用户选择日期和时间。
  3. 自定义对话框:DialogFragment可以用于创建自定义的对话框,满足特定的业务需求。

腾讯云提供了一些相关产品,可以用于支持DialogFragment的开发和部署:

  1. 腾讯云移动推送(https://cloud.tencent.com/product/tpns):提供了消息推送服务,可以用于在活动重新创建后重新显示DialogFragment时发送通知。
  2. 腾讯云云函数(https://cloud.tencent.com/product/scf):提供了无服务器的计算服务,可以用于处理DialogFragment的业务逻辑。
  3. 腾讯云云数据库 MySQL 版(https://cloud.tencent.com/product/cdb):提供了可扩展的关系型数据库服务,可以用于存储DialogFragment的数据。

需要注意的是,以上只是一些示例产品,具体选择哪个产品要根据实际需求和场景来确定。同时,还可以结合其他腾讯云产品和服务来构建完整的解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 原来Android中请求权限也可以有这么棒的用户体验

    DialogFragment也是Google推荐使用的一种对话框实现方案,虽然我认为DialogFragment能实现的功能用Dialog也都能实现,但是强制使用Dialog确实显得有那么一些不友好。...但是放开对话框的实现方式之后,开发者需要对自己实现的对话框负责,你需要考虑用户点击确定按钮后重新请求权限,需要考虑用户点击取消按钮后回调请求结果,需要考虑对话框取消的时候如何防止权限请求事件丢失,需要考虑横竖屏旋转时怎样防止...可以看到,使用了自定义对话框的方式之后,我们可以自由地控制界面上的元素和内容,用户体验也得到了明显的改善。 不过,即使这样,还是有朋友评论区里留言,嫌这个对话框太丑了(1人嫌丑,42人点赞)。 ?..., 0).group 从Android 10开始Google禁用了这个功能,所以之后的版本中需要手动设置每个运行时权限对应了什么权限组。...现在重新运行程序之后,浅色主题和深色主题下的对话框效果分别如下图所示: ? ?

    2.5K30

    Android后台杀死系列之一:FragmentActivity及PhoneWindow后台杀死处理机制

    虽然被杀死了,但是onCreate函数执行的时候还是只执行了一次啊,为什么会出现两个DialogFragment,这里其实就有一个DialogFragment是通过Android自身的恢复重建机制重建出来...下面再来看下为什么会出现两个DialogFragment。...为什么出现两个DialogFragment Fragment在被创建之后,如果不通过add或者replace添加到Activity的布局中是不会显示的,保存现场的时候,也是保存了add的这个状态的,来看一下...B,B显示,再stop A,stop A的时候,需要保存A的现场,因为不可见的Activity都是可能被后台杀死的,比如,开发者选项中打开不保留活动,就会达到这种效果,启动另一个Activity...,并在onRestoreInstanceState恢复postion,并重新赋值给Tabhost,之后FragmentTabHostonAttachedToWindow时,就可以根据恢复的postion

    2.9K30

    DialogFragment踩坑记

    普通的Fragment还是DialogFragment 同时设置不要Title跟背景 隐藏Dialog 不保留活动 显示的逻辑 推荐使用DialogFragment 要选android X下的DialogFragment...版本的,记得要选择第一种DialogFragment,当然,系统源码也很贴心的把Framework的DialogFragment设置为不推荐使用,而且还注明让你使用support包下面的DialogFragment...,业务这边的逻辑一般是重置了,所以也是不需要再展示dialog,不过发生不保留,系统会自动重新展示dialog,这个时候,需要手动关闭dialog override fun onViewCreated(...= null) { //处理不保留活动下的场景,这个时候,返回会重新展示,改成主动关闭,不展示 dismissAllowingStateLoss...onResume的时候,触发Dialog的显示,代码就不贴了 推荐使用DialogFragment 建议展示Dialog的地方,统一使用DialogFragment,更好的处理生命周期的各种场景,而且

    2K30

    实践 | 为 Trackr app 适配大屏幕设备

    近期我们为适配了大屏幕设备,所以不妨一起看看怎样应用中使用 Material Design 和响应式范式,让应用在大屏幕设备上提供更精致、更直观的用户体验。...调整后 : 大尺寸屏幕上,我们使用了 DialogFragment,于是编辑任务的界面就悬浮在了其他内容之上。...相比之下,DialogFragment 吸引了用户,让关注点处于前面和中间。 在用户保存自己的改动或是我们确认用户的修改可以取消之前,我们不希望从编辑任务 (或者新建任务) 界面导航到其他地方。...使用 DialogFragment 之后,所有的这些元素都位于对话框之后,使得用户不能与它们交互,这恰恰是我们想要的效果。...当这种缺陷出现时,后退一步,关注用户体验,并且寻找一种设计范式来改进。 小结 随着平板电脑和可折叠设备逐渐流行,创建响应式用户交互界面变得比以往更加重要。

    1.7K20

    Android底部弹窗的实现示例代码

    由于,我们要将mPopWindow放在整个屏幕的最低部,所以我们将R.layout.activity_main做为的父容器,将其显示BOTTOM的位置。...利用DialogFragment实现底部弹窗 实现弹窗之前,先了解一下DialogFragment DialogFragmentandroid 3.0时被引入。...是一种特殊的Fragment,用于Activity的内容之上展示一个模态的对话框。 使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。...onCreateView即使用定义的xml布局文件展示Dialog。onCreateDialog即利用AlertDialog或者Dialog创建出Dialog。...也是Fragment,所以,DialogFragment有和Fragment一样的生命周期,onStart方法中初始化弹窗的数据,onCreateView中加载布局,同样,和Fragment使用方法也是一样的

    4.3K31

    三句代码创建全屏Dialog或者DialogFragment:带你从源码角度实现全屏Dialog

    针对DialogFragment的实现方式 Android比较推荐采用DialogFragment实现对话框,完全能够实现Dialog的所有需求,并且还能复用Fragment的生命周期管理,被后台杀死后还能自动恢复...之后来看第二种方案,利用Theme来实现。...(推荐使用DialogFragment复用了Fragment的声明周期,被杀死后,可以恢复重建) public class FragmentFullScreen extends DialogFragment...为什么需要在setContentView之前设置Window.FEATURE_NO_TITLE属性 如果不设置该属性,有可能出现如下效果: ?...(大小可以),有些属性是选择布局文件的参考,如果是setContentView之后再设定,就是失去了意义,另外Android也不允许选定布局后,设置一些影响布局选择的属性,会抛出异常,原理如下。

    3.8K40

    仿iOS底部弹框实现及分析

    底部一个取消按钮(一个取消按钮) ? 所以我们先考虑这个弹框的布局就需要: ? 因为中间的菜单是一个列表,所以根据这个图我们可以想到我们所要写的弹框的布局大致为: ?...2 实现弹框: 因为后来谷歌推荐使用的DialogFragment,所以我们此处弹框也是使DialogFragment。...我们可以改变DecorView的背景色,设置的背景色为透明即可: ?...既然谈到了上下的移动,大家肯定马上想到了用TranslateAnimation动画来做,我们就一步步来看如何用这个来实现: 弹框出现动画: ?...6 点击空白让弹框消失问题: 当点击上方一些空白处,我们会发现我们的弹框会直接消失,而不会像我们上面点击按钮点击事件那样,弹框先往下移动再消失,因为DialogFragment默认点击弹框外的时候

    1.8K10

    妖怪般的VerifyError | 奇形怪状的bug

    这个也是来b之前和字节大佬面试切磋时的一个问题吧,现在回头看看,其实还是受益匪浅,也大概知道这种问题如何去查看和调试了。 问题的本质还是之前说的androidx的升级。...之后我们找了一台4.4的设备,发现在release版本的确会出现这个问题,异常情况如下所示。...而之后简单的分析了下异常,猜测dialogfragment的类本身就出现了问题,所以导致了类加载的时候,验证字节码安全性失败。但是这部分可是androidx内部的代码啊,这不就是不讲武德吗?...而在新版本的androidx中,则给Fragment添加了另外一个有参的构造函数,所以这部分就出现了异常。...其中要注意的是,异常处理(Exception Hanler)也是在这个时候被校验的,的opcode是OP_MOVE_EXCEPTION(0x0d,就是前面日志”rejecting opcode 0x0d

    95340

    解决Android开发中的痛点问题用Kotlin Flow

    但选型时我们要考虑以下问题,也是LiveData被推荐使用的优势 : 是否会发生内存泄漏,观察者的生命周期遭到销毁后能否自我清理 是否支持线程切换,比如LiveData保证主线程感知变化并更新UI 不会在观察者非活跃状态下消费事件...也可以使用repeatOnLifecycle(State) 来UI层收集,当生命周期 < State时,会取消协程,恢复时再重新启动协程。...= null ): Channel 首先Channel是热的,即任意时刻发送元素到Channel即使没有订阅者也会执行。...分析问题 我们想要向ViewModel发送事件,并让所有依赖的组件接收到事件。...这也是我花很长的篇幅去介绍解决两个问题过程的原因。只有真的痛过才会感受到选择合适架构的优势。 单向数据流,任何状态的变化都来自事件,因此更容易定位出问题。

    3.2K20

    项目需求讨论-APP手势解锁及指纹解锁

    快捷登录方式选择 当用账号密码登录成功后,我们就在登录界面直接弹出一个弹框,然后让用户选择想要的快捷登录方式,当然如果用户二种都不想要,那就直接按取消,然后登录到主页,然后下次再打开应用就会又要重新输入账号密码...具体的大家去百度下DialogFragment即可。...cancel 这个是CancellationSignal类的一个对象,这个对象用来指纹识别器扫描用户指纹的是时候取消当前的扫描操作,如果不取消的话,那么指纹扫描器会移植扫描直到超时(一般为30s,取决于具体的厂商实现...上面的代码中使用了android的KeyGenerator来创建一个key并且把存储设备中。...这个方法专门用于发送一个取消的命令给特定的监听器,让其取消当前操作。 因此,app可以需要的时候调用cancel方法来取消指纹扫描操作。

    1.5K20

    Android开发笔记(二十三)文件对话框FileDialog

    其中最常用的是AlertDialog,而且需要自定义对话框的时候,多半也是AlertDialog.Builder基础上集成其他的控件,具体参见《Android开发笔记(六十六)自定义对话框》。...接着创建一个AlertDialog.Builder对象,该Builder对象中嵌入布局视图,并设置标题、确定按钮、取消按钮。...要想实现一个更加完善的对话框,需要在自定义对话框时继承DialogFragment类。下面用一个简单的提示对话框进行说明,该对话框主要是显示一段文字,然后由用户选择“确定”或者“取消”。...文件对话框与上面的提示对话框一样,也是DialogFragment类继承而来,主要步骤与ConfirmDialogFragment大同小异,其主要难点在于文件和文件夹的处理。...当然不要忘了主页面的回调方法中对选定文件做具体处理,文件打开之后要如何读取数据,又要如何把内存中的数据保存到文件中。 下面是文件打开对话框与文件保存对话框的页面截图: ? ?

    3.3K30

    项目需求讨论-仿ios底部弹框实现及分析

    hi,项目开发中,有时候需要仿照ios的底部弹框做效果,比如我们iPhone上面关闭定位的时候,就会弹出ios特有的底部弹框: ?...底部一个取消按钮(一个取消按钮) ? 所以我们先考虑这个弹框的布局就需要: ?...---- 实现弹框: 因为后来谷歌推荐使用的是DialogFragment,所以我们此处弹框也是使用DialogFragment。...---- 弹框从下而上显示: 我们看过ios的弹框效果,是从底部从下而上升起,然后消失的时候也是从上而下消失。...既然谈到了上下的移动,大家肯定马上想到了用TranslateAnimation动画来做,我们就一步步来看如何用这个来实现: 弹框出现动画: Animation slide = new TranslateAnimation

    1.1K30

    Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

    时,当用户旋转屏幕会重新启动。...这里,如果在异步数据完成加载之后,旋转屏幕,使用上述a、b两种方法都不会很难,无非是保存数据和恢复数据。...效果图: 4、使用Fragment来保存对象,用于恢复数据 如果重新启动你的Activity需要恢复大量的数据,重新建立网络连接,或者执行其他的密集型操作,这样因为配置发生变化而完全重新启动可能会是一个慢的用户体验...首先说一下探索过程: 起初,我认为此时旋转无非是再启动一次线程,并不会造成异常,我只要即使onDestroy里面关闭上一个异步任务就可以了。...真心很蛋疼,并且即使对话框关闭了,任务关闭了;用户旋转还是会造成重新创建任务,从头开始加载数据。

    2.1K20

    kafka消息传递语义

    0.11.0.0 之前,如果生产者未能收到表明消息已提交的响应,则别无选择,只能重新发送消息。...从 0.11.0.0 开始,Kafka 生产者还支持幂等传递选项,以保证重新发送不会导致日志中出现重复条目。...它可以读取消息,然后将其位置保存在日志中,最后处理消息。 在这种情况下,消费者进程有可能在保存其位置之后但在保存其消息处理的输出之前崩溃。...在这种情况下,接管处理的进程将从保存的位置开始,即使该位置之前的一些消息尚未处理。 这对应于“最多一次”语义,因为消费者失败消息的情况下可能不会被处理。...它可以读取消息,处理消息,并最终保存其位置。 在这种情况下,消费者进程有可能在处理消息之后但在保存其位置之前崩溃。 在这种情况下,当新进程接管它收到的前几条消息时,已经被处理了。

    1.1K30

    Android指纹识别API讲解,一种更快更好的用户体验

    所以,可能很多开发者就觉得,即使做了指纹认证功能,也无法兼容所有的手机,还是要配合图案解锁或密码等功能一起使用才行,那么索性就只用图案和密码好了,一劳永逸。...因为毕竟支持的设备有限,还要配合图案和密码来使用才行,如果实现起来非常复杂,又只能支持部分设备的话,那投入产出比就太低了,或许这也是很多APP不肯去实现指纹认证功能的原因。...已进入App主界面 的TextView,待会在指纹认证通过之后,就会让APP跳转到此界面。...接着我们创建一个FingerprintDialogFragment类,并让继承自DialogFragment,用于作为提示用户进行指纹认证的对话框,代码如下所示: @TargetApi(23) public...第二个参数是CancellationSignal对象,可以使用它来取消指纹认证操作。第三个参数是可选参数,官方的建议是直接传0就可以了。

    1.1K30

    Android基础部分再学习---activity的生命周期

    整个生命周期的活动中,系统可能会调用onStart()和onStop()多次,因为活动之间交替进行隐藏或显示给用户。...(这里所说的状态都是指对应的某个方法返回之后即使一个Activity进入到Paused或者Stopped方法,仍然是存在的,被保存在任务返回堆栈中。...3、onStart和onRestart、onStop Activity进入到Stopped状态之后极有可能被系统所回收,某些极端情况下,系统可能是直接杀死应用程序的进程,而不是调用onDestory...因此,这两个方法最好使用在出现异常的时候! 三、结束另一个进程   要通过一个进程去结束另一个进程。...四、退出到主屏幕   这个方法,也是退出当前进程的一个方法。如果我们进程中创建了很多的Activity,但是又不想关闭时去退出不在任务栈顶的Activity,那么就可以直接使用这个方法了。

    88920
    领券