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

关闭后,DialogFragment UI仍保留

是指在关闭DialogFragment时,其UI界面仍然保持显示状态,不会被销毁或隐藏。

DialogFragment是Android开发中的一个类,用于创建对话框式的界面。当我们关闭DialogFragment时,通常情况下,其UI界面会被销毁或隐藏,不再显示在屏幕上。但有时候我们希望关闭DialogFragment后,其UI界面仍然保留,以便下次需要时可以快速显示出来。

实现关闭后DialogFragment UI仍保留的方法如下:

  1. 使用setRetainInstance(true)方法:在DialogFragment的onCreate方法中调用setRetainInstance(true)方法,该方法会使DialogFragment在配置变化(如屏幕旋转)时保留其实例,从而保持UI界面的显示状态。具体代码如下:
代码语言:txt
复制
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRetainInstance(true);
}
  1. 使用DialogFragment的dismiss方法:在关闭DialogFragment时,使用dismiss方法而不是直接调用remove或replace等方法。dismiss方法会将DialogFragment从FragmentManager中移除,但不会销毁其实例,从而保持UI界面的显示状态。具体代码如下:
代码语言:txt
复制
dialogFragment.dismiss();

关闭后,DialogFragment UI仍保留的应用场景包括但不限于以下情况:

  1. 对话框式的界面:当我们需要显示一个对话框式的界面,并希望在关闭对话框后,下次打开时能够保持上次的状态。
  2. 临时保存用户输入:当用户在DialogFragment中输入一些内容,但还没有提交或保存时,我们可以关闭DialogFragment并保留其UI界面,以便用户下次打开时可以继续编辑。
  3. 多步骤操作:当我们需要引导用户完成一个多步骤的操作时,可以使用DialogFragment来显示每个步骤的界面,并在关闭DialogFragment后保留上一步的状态,以便用户可以返回上一步进行修改。

腾讯云提供了一系列与云计算相关的产品,以下是一些推荐的腾讯云产品和产品介绍链接地址:

  1. 云服务器(CVM):提供可扩展的云服务器实例,支持多种操作系统和应用场景。产品介绍链接
  2. 云数据库 MySQL:提供高性能、可扩展的云数据库服务,适用于各种规模的应用。产品介绍链接
  3. 云原生容器服务(TKE):提供高度可扩展的容器化应用管理平台,支持容器部署、弹性伸缩等功能。产品介绍链接
  4. 人工智能开放平台(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。产品介绍链接

请注意,以上链接仅供参考,具体的产品选择应根据实际需求和情况进行评估和选择。

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

相关·内容

DialogFragment踩坑记

普通的Fragment还是DialogFragment 同时设置不要Title跟背景 隐藏Dialog 不保留活动 显示的逻辑 推荐使用DialogFragment 要选android X下的DialogFragment...,所以也是不需要再展示dialog,不过发生不保留,系统会自动重新展示dialog,这个时候,需要手动关闭dialog override fun onViewCreated(view: View, savedInstanceState...= null) { //处理不保留活动下的场景,这个时候,返回会重新展示,改成主动关闭,不展示 dismissAllowingStateLoss...建议展示Dialog的地方,统一使用DialogFragment,更好的处理生命周期的各种场景,而且在Fragment回收,也可以自动帮我们关闭Dialog,避免逻辑异常 public void onDestroyView...= null) { mViewDestroyed = true; //fragment销毁,会自动关闭dialog

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

    对于新技术新框架,我们不会盲目接入,在经过调研试用一阶段,发现Flow确实可以为业务开发止痛提效,下文分享这个探索的过程。...痛点一:蹩脚地处理ViewModel和View层通信 发现问题 当屏幕可旋转,LiveData不好用了?...但选型时我们要考虑以下问题,也是LiveData被推荐使用的优势 : 是否会发生内存泄漏,观察者的生命周期遭到销毁能否自我清理 是否支持线程切换,比如LiveData保证在主线程感知变化并更新UI 不会在观察者非活跃状态下消费事件...发现问题 DialogFragment和Activity的通信 我们通常使用DialogFragment来实现弹窗,在其宿主Activity中设置弹窗的点击事件时,如果回调函数中引用了Activity对象...结论 架构中对SharedFlow和channelFlow的使用绝对值得保留,就算不使用MVI架构,参考这里的实现也可以帮助解决很多开发中的难题,尤其是涉及横竖屏的问题。

    3.2K20

    DialogFragment自动弹出软键盘,消失时关闭软键盘

    消失时关闭软键盘 dialog关闭分为几种情况,处理方式不一样: 1.用户手动调用DialogFragment.dismiss() 这时可以重写dismiss方法,在调用之前关闭软键盘。...DialogFragment本身没有监听关闭之前的方法,只有两个相关方法onCancel(dialog: DialogInterface)和onDismiss(dialog: DialogInterface...hideSoftInputFromWindow(it.windowToken, 0) } super.onDismiss(dialog) } 复制代码 运行软键盘正常关闭,OK...自定义Dialog在dismiss之前通知 DialogFragment 关闭软键盘 转变思路,既然在 DialogFragment 中无法提前监听dialog关闭,那就自定义Dialog重写dismiss...方法,在Dialog关闭之前告知 DialogFragment 关闭软键盘 class EditDialog(context: Context?

    5.2K40

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

    现在大家可以自由发挥,定制出任意符合你们项目UI风格的对话框。具体过程可以参考这篇文章 PermissionX重磅更新,支持自定义权限提醒对话框 。...我个人认为这种实现方案是没有问题的,PermissionX控制整个权限的请求流程,而开发者可以自由控制UI的展示,非常完美。...DialogFragment也是Google推荐使用的一种对话框实现方案,虽然我认为DialogFragment能实现的功能用Dialog也都能实现,但是强制使用Dialog确实显得有那么一些不友好。...当时我的想法是,PermissionX只定义显示对话框,关闭对话框等必要的接口,至于实现方面不做任何限制,你可以用Dialog,也可以用DialogFragment,甚至可以用PopupWindow,或者是完全自定义的控件都行...但是放开对话框的实现方式之后,开发者需要对自己实现的对话框负责,你需要考虑用户点击确定按钮重新请求权限,需要考虑用户点击取消按钮回调请求结果,需要考虑对话框取消的时候如何防止权限请求事件丢失,需要考虑横竖屏旋转时怎样防止

    2.5K30

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

    其实现全屏的原理同Dialog一样,只不过是时机的把握 public class FullScreen DialogFragment extends DialogFragment { @Nullable...generateLayout创建根布局,Android系统默认实现了多种样式的根布局应,以应对不同的场景,选择的规则就是用户设置的主题样式(Window属性),比如需不需要Title,而布局样式在选定就不能再改变了...(大小可以),有些属性是选择布局文件的参考,如果是在setContentView之后再设定,就是失去了意义,另外Android也不允许在选定布局,设置一些影响布局选择的属性,会抛出异常,原理如下。...= null) { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN...| View.SYSTEM_UI_FLAG_LAYOUT_STABLE); } super.show(); } 如何设置状态栏透明呢

    4K40

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

    Trackr 是一个可以管理任务的示例应用,除了主要用于从支持辅助功能的角度探索通用的 UI 范例外,它还是我们展示现代 Android 开发最佳实践的示例之一。...调整 : 任务 (Tasks) 和归档 (Archive) 界面都通过 SlidingPaneLayout 显示 列表/详细信息布局。...调整 : 在大尺寸屏幕上,我们使用了 DialogFragment,于是编辑任务的界面就悬浮在了其他内容之上。...使用 DialogFragment 之后,所有的这些元素都位于对话框之后,使得用户不能与它们交互,这恰恰是我们想要的效果。...△ 新建任务使用了与编辑任务相同的 UI 范式 这里的重点是,当您在设备上尝试那些最直截了当的设计时,可能会发现它们在功能上有所缺陷。

    1.7K20

    Android 录音功能直接拿去用

    我还将当前的时间赋值给 mStartingTimeMills,这里主要是为了记录录音的时长,等到录音结束再获取一次当前的时间,然后将两个时间进行相减,就能得到录音的具体时长了。...等到录音结束,停止服务,便会回调 RecordingService 的 onDestroy() 方法,这时候便会调用 stopRecording() 方法,关闭 mRecorder,并用 SharedPreferences...,对于 DialogFragment 不是很了解,可以先看看我这篇文章 Android 撸起袖子,自己封装 DialogFragment。...intent); } } 好吧,其实并没有干了什么大事,只是创建了保存录音文件的文件夹,然后根据 mStartRecording 的值进行 RecordingService 的启动和关闭罢了...当 MediaPlayer 的内容播放完成,调用 stopPlaying() 方法,关闭 mMediaPlayer。

    3.1K31

    仿iOS底部弹框实现及分析

    hi,在项目开发中,有时候需要仿照ios的底部弹框做效果,比如我们在iPhone上面关闭定位的时候,就会弹出ios特有的底部弹框: ?...选项(N个选项,此处图片只有关闭这一个选项) ? 底部一个取消按钮(一个取消按钮) ? 所以我们先考虑这个弹框的布局就需要: ?...2 实现弹框: 因为后来谷歌推荐使用的DialogFragment,所以我们此处弹框也是使DialogFragment。...我们就是单纯的引入我们写的布局,不做其他处理,我们运行发现界面效果如下图所示: ?...同时这里我们要额外增加监听动画结束事件,因为我们让弹框往下移动结束,要让这个弹框dismiss掉: ? 所以我们的动画的代码总结下就是: ? 4 弹框的点击事件: 相关的点击事件就很简单了。

    1.9K10

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

    b)关闭ProgressDialog的代码在线程的onPostExecutez中,但是上个线程如果已经杀死,无法关闭之前ProgressDialog。...c)谷歌的官方不建议使用ProgressDialog,这里我们会使用官方推荐的DialogFragment来创建我的加载框,如果你不了解:请看 Android 官方推荐 : DialogFragment...声明引用指向你的有状态的对象 b) 当Fragment创建时调用setRetainInstance(boolean) c) 把Fragment实例添加到Activity中 d) 当Activity重新启动,...事实上,如果我关闭了,上一次的对话框会一直存在;如果我不关闭,但是activity是一定会被销毁的,对话框的dismiss也会出异常。...真心很蛋疼,并且即使对话框关闭了,任务关闭了;用户旋转还是会造成重新创建任务,从头开始加载数据。

    2.1K20

    Android 基础:Fragment,看这篇就够了 (上)

    本文从为什么出现Fragment开始,介绍了Fragment相关的方方面面,包括Fragment的基本定义及使用、回退栈的内部实现、Fragment通信、DialogFragment、ViewPager...bundle)方式添加,而不建议通过为Fragment添加带参数的构造函数,因为通过setArguments()方式添加,在由于内存紧张导致Fragment被系统杀掉并恢复(re-instantiate)时能保留这些数据...创建完Fragment,接下来就是把Fragment添加到Activity中。...DialogFragment DialogFragment是Android 3.0提出的,代替了Dialog,用于实现对话框。他的优点是:即使旋转屏幕,也能保留对话框状态。...如果要自定义对话框样式,只需要继承DialogFragment,并重写onCreateView(),该方法返回对话框UI。这里我们举个例子,实现进度条样式的圆角对话框。

    6.1K40

    ViewModel:持久化、onSaveInstanceState()、UI 状态恢复和 Loader

    ViewModel 被设计用来以与生命周期相关的方式保存和管理 UI 相关的数据。ViewModel 允许数据在例如屏幕旋转这样的配置更改依然保留。...Activity 未搜索时及搜索的状态示例。 用户离开一个 activity 有两种常用的方式,用户期望的也是两种不同的结果: 第一个是用户是否彻底关闭了 activity。...例如,有些 activity 在被用户关闭不会以一个全新的状态打开。一般地,当我在 Android 手机上关闭然后重新打开 Chrome 时,返回到了关闭 Chrome 之前正在浏览的页面。...Loader 是 UI 控制器用来加载数据的。此外,Loader 可以在配置更改期间保留,比如说在加载的过程中你旋转了手机屏幕。这听起来很耳熟吧!...在这个场景下,ViewModel 在 activity 旋转或者进入后台时保留数据,而单纯用 onSaveInstanceState() 并没那么容易实现。

    3.8K30

    ViewModel:持久化、onSaveInstanceState()、UI 状态恢复和 Loader

    ViewModel 被设计用来以与生命周期相关的方式保存和管理 UI 相关的数据。ViewModel 允许数据在例如屏幕旋转这样的配置更改依然保留。...ViewModel 被设计用来以与生命周期相关的方式保存和管理 UI 相关的数据。ViewModel 允许数据在例如屏幕旋转这样的配置更改依然保留。...例如,有些 activity 在被用户关闭不会以一个全新的状态打开。一般地,当我在 Android 手机上关闭然后重新打开 Chrome 时,返回到了关闭 Chrome 之前正在浏览的页面。...Loader 是 UI 控制器用来加载数据的。此外,Loader 可以在配置更改期间保留,比如说在加载的过程中你旋转了手机屏幕。这听起来很耳熟吧!...在这个场景下,ViewModel 在 activity 旋转或者进入后台时保留数据,而单纯用 onSaveInstanceState() 并没那么容易实现。

    1K20

    Android基础:Fragment,看这篇就够了

    bundle)方式添加,而不建议通过为Fragment添加带参数的构造函数,因为通过setArguments()方式添加,在由于内存紧张导致Fragment被系统杀掉并恢复(re-instantiate)时能保留这些数据...创建完Fragment,接下来就是把Fragment添加到Activity中。...DialogFragment DialogFragment是Android 3.0提出的,代替了Dialog,用于实现对话框。他的优点是:即使旋转屏幕,也能保留对话框状态。...如果要自定义对话框样式,只需要继承DialogFragment,并重写onCreateView(),该方法返回对话框UI。这里我们举个例子,实现进度条样式的圆角对话框。 ?...注意点: 在Fragment中有两个变量控制是否需要做数据加载: mIsPrepared:表示UI是否准备好,因为数据加载需要更新UI,如果UI还没有inflate,就不需要做数据加载,因为setUserVisibleHint

    4.9K122
    领券