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

Android开发之DialogFragment用法实例总结

分享给大家供大家参考,具体如下: 背景 Android 官方推荐使用 DialogFragment 来代替 Dialog ,可以让它具有更高可复用性(降低耦合)和更好便利性(很好处理屏幕翻转情况...Dialog ,需要我们手动处理屏幕翻转情况,但使用 DialogFragment 的话,则不需要我们进行任何处理,FragmentManager 会自动管理 DialogFragment 生命周期...方法 ① 在使用了多线程(例如网络请求)情况下,不能正确获取当前 Fragment 状态,会产生空指针异常。...对于方法 ① 无法正确返回其状态,方法 ② 则正常。...更多关于Android相关内容感兴趣读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图

1.5K20

Android 必知必会 - DialogFragment 使用总结

Dialog ,需要我们手动处理屏幕翻转情况,但使用 DialogFragment 的话,则不需要我们进行任何处理,FragmentManager 会自动管理 DialogFragment 生命周期...扩展阅读:Dialog 在屏幕翻转处理 无标题栏/全屏 在基本用法里代码注释有设置主题地方,下面详细说下两种方法下设置无标题栏和实现全屏方式: 无标题栏 对于方法 ① : @Override public...应用场景区别 文章一开始简单总结了方法 ① 和方法应用场景,这里说明下: 从基本用法中可以看到方法 ① 为简单替代 Dialog 提供了非常方便创建方式,比方法 ② 有优势 方法 ① 在使用了多线程...对于方法 ① 无法正确返回其状态,方法 ② 则正常。...方法 ① 和方法 ② 创建 DialogFragment 一些状态并不是完全一致。

3.8K31
您找到你想要的搜索结果了吗?
是的
没有找到

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

调整后 : 在大尺寸屏幕上,我们使用DialogFragment,于是编辑任务界面就悬浮在了其他内容之上。...△ 悬浮编辑组件将关注点放在用户当前目标内容上 起初我们尝试将编辑任务界面取代任务详细信息 (Task Detail) 显示在详细信息窗格中。...相比之下,DialogFragment 吸引了用户,让关注点处于前面和中间。 在用户保存自己改动或是我们确认用户修改可以取消之前,我们不希望从编辑任务 (或者新建任务) 界面导航到其他地方。...原本全屏显示编辑界面,这种请求很容易被拦截,因为唯一离开此界面的方式就是使用返回键。...使用 DialogFragment 之后,所有的这些元素都位于对话框之后,使得用户不能与它们交互,这恰恰是我们想要效果。

1.7K20

Navigation深入浅出,到出神入化,再到实战改造(二)

了解Navigation使用后,思考几个问题 NavHostFragmnet作为路由容器,是如何解析nav_graph资源文件,从而生成NavGraph对象? 跳转,路由是如何被执行?...所以进入方法是这个根节点标签,1.中navigator=NavGraphNavigator 2.navigator.createDestination()就是dest=new...mBackStack,如果回退栈为空,那么mGraph一定是第一个添加元素 把新目标NavDestination也加入进回退栈 经过这里,导航具有了返回栈能力。...总结一下几点: Navigator.Name 是个注解类,他会用在所有Navigator所有子类类头,用来标记 子类是什么类型Navigator 自定义自己Navigator,必须继承Navigator...支持Deeplink 可视化编辑页面 回退栈管理 Android组件(如:BottomNavigationView)完美交互,JetPack其他组件联合使用 缺点: 所有节点定义在nav_graph.xml

1.8K40

android推荐使用dialogFrament而不是alertDialog

2、 好处与用法 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键可以更好管理其声明周期,它和Fragment有着基本一致声明周期。...且DialogFragment也允许开发者把Dialog作为内嵌组件进行重用,类似Fragment(可以在大屏幕和小屏幕显示出不同效果)。...上面会通过例子展示这些好处~ 使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。...MainActivity中需要实现我们接口LoginInputListener,实现我们方法,就可以实现当用户点击登陆,获得我们帐号密码了: c)  MainActivity   package...可以看到,传统Dialog旋转屏幕就消失了,且后台log会报异常~~~使用DialogFragment则不受影响。 好了,关于DialogFragment介绍结束~~~~ 源码点击下载

2.3K50

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

消失时关闭软键盘 dialog关闭分为几种情况,处理方式不一样: 1.用户手动调用DialogFragment.dismiss() 这时可以重写dismiss方法,在调用之前关闭软键盘。...DialogFragment本身没有监听关闭之前方法,只有两个相关方法onCancel(dialog: DialogInterface)和onDismiss(dialog: DialogInterface...mService.hideSoftInput 断点发现当在onCancel中关闭软键盘 mServedView为null,所以走不到关闭代码,看一下mServedView在哪赋值为null void...方法,在Dialog关闭之前告知 DialogFragment 关闭软键盘 class EditDialog(context: Context?...最后,还有一种方式就是使用全屏dialog,在原先空白区域加一个透明View,设置view点击事件去关闭软键盘和弹窗,这样就避免了点击空白处关闭问题。

5K40

DialogFragment踩坑记

普通Fragment还是DialogFragment 同时设置不要Title跟背景 隐藏Dialog 不保留活动 显示逻辑 推荐使用DialogFragment 要选android X下DialogFragment...版本,记得要选择第一种DialogFragment,当然,系统源码也很贴心把它FrameworkDialogFragment设置为不推荐使用,而且还注明让你使用support包下面的DialogFragment...,当然项目也基本都从support转成了Android x,感觉这个注释可以更新下了 普通Fragment还是DialogFragment 先看下系统onCreate方法 mShowsDialog...()方法来展示 DialogFragment如果只是当做普通Fragment,建议使用普通Fragment就可以了,这样代码逻辑比较清晰 同时设置不要Title跟背景 想同时不要Title跟背景,...在监听到onResume时候,触发Dialog显示,代码就不贴了 推荐使用DialogFragment 建议展示Dialog地方,统一使用DialogFragment,更好处理生命周期各种场景

1.8K30

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

使用lifecycle-runtime-ktx库中launchWhenX方法,对Channel收集协程会在组件生命周期 < X挂起,从而避免异常。...根据之前分析诉求,空档期事件不能丢弃,而应该在Activity回到活跃状态依次消费。所以考虑当缓冲区溢出策略为挂起,容量默认0即可,即默认构造方法即符合我们需求。...发现问题 DialogFragment和Activity通信 我们通常使用DialogFragment来实现弹窗,在其宿主Activity中设置弹窗点击事件,如果回调函数中引用了Activity对象...看起来EventBus是一种实现方法,但是已经有了ViewModel作为媒介再使用显然有些浪费,EventBus还是更适合跨页面、跨组件通信。...可以选择使用StateFlow/LiveData收敛页面全部状态,也可以拆分成多个。但更加建议按UI组件模块拆分收敛。 跳过使用Intent,直接调用ViewModel方法也可以接受。

3.1K20

解决Android中自定义DialogFragment解决宽度和高度问题

关于详解Android应用中DialogFragment基本用法,大家可以参考下。 1、 概述 DialogFragment在android 3.0被引入。...2、 好处与用法 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键可以更好管理其声明周期,它和Fragment有着基本一致声明周期。...且DialogFragment也允许开发者把Dialog作为内嵌组件进行重用,类似Fragment(可以在大屏幕和小屏幕显示出不同效果)。...上面会通过例子展示这些好处~ 使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。...高度固定,那么我们需要设置DialogFragment高度,在FragmentonResume()声明周期方法中设置window宽高即可。

4.1K20

Android 撸起袖子,自己封装 DialogFragment

本文主要内容 DialogFragment 是什么 创建通用 CommonDialogFragment 实现各种类型 DialogFragment 在写正文之前,先来一波效果展示吧 ?...DialogFragmentDemos.gif 一、DialogFragment 是什么 DialogFragment 在 Android 3.0 被引入,是一种特殊 Fragment,用于在 Activity...基本一样生命周期,使用 DialogFragment 来管理对话框,当旋转屏幕和按下后退键时候可以更好管理其生命周期 在手机配置变化导致 Activity 需要重新创建,例如旋转屏幕,基于 DialogFragment...对话框将会由 FragmentManager 自动重建,然而基于 Dialog 实现对话框却没有这样能力 2、DialogFragment 使用 使用 DialogFragment 至少需要实现...onCreateView() 或者 onCreateDialog() 方法,onCreateView() 即使用自定义 xml 布局文件来展示 Dialog,而 onCreateDialog() 即使用

1.2K41

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

然后你可以在onCreate()或onRestoreInstanceState()方法中恢复。 b、如果是大量数据,使用Fragment保持需要恢复对象。 c、自已处理配置变化。...这里,如果在异步数据完成加载之后,旋转屏幕,使用上述a、b两种方法都不会很难,无非是保存数据和恢复数据。...c)谷歌官方不建议使用ProgressDialog,这里我们会使用官方推荐DialogFragment来创建我加载框,如果你不了解:请看 Android 官方推荐 : DialogFragment...当然了,运行过程中Activity不断重启,我们也提供了setActivity方法,onDestory,会setActivity(null)防止内存泄漏,同时我们也会关闭与其绑定加载框;当onCreate...,当用户在使用app,忽然接到一个来电,长时间没有回到你app界面也会造成Activity销毁与重建,所以一个行为良好App,是有必要拥有恢复数据能力~~。

2.1K20

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

全屏Dialog 全屏Dialog实现方法 这里对象分为两种,一种是针对传统Dialog,另一种是针对DialogFragment(推荐),方法也分为两种一种是利用代码实现,另一种是利用主题样式Theme...针对DialogFragment实现方式 Android比较推荐采用DialogFragment实现对话框,它完全能够实现Dialog所有需求,并且还能复用Fragment生命周期管理,被后台杀死后还能自动恢复...(推荐使用DialogFragment,它复用了Fragment声明周期,被杀死后,可以恢复重建) public class FragmentFullScreen extends DialogFragment...,导致上面的状态栏,底部导航栏,左右都有一定边距 <inset xmlns:android="http://schemas.android.com/apk/res/android" android...,会将这里边距考虑进去,而且对于windowIsFloating = falseWindow,会将状态栏及底部导航栏考虑进去(这里不分析)。

3.1K40

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

DialogFragment也是Google推荐使用一种对话框实现方案,虽然我认为DialogFragment能实现功能用Dialog也都能实现,但是强制使用Dialog确实显得有那么一些不友好。...当时我想法是,PermissionX只定义显示对话框,关闭对话框等必要接口,至于实现方面不做任何限制,你可以用Dialog,也可以用DialogFragment,甚至可以用PopupWindow,或者是完全自定义控件都行...所以最终我采取了和之前一样方式,增加了一个RationaleDialogFragment类,该类是继承自DialogFragment,里面也定义了PermissionX所要求几个必要方法,开发者在使用...DialogFragment自定义对话框同样将这几个必要方法进行实现即可。...看上去好像并不是什么重磅功能,但恰恰相反,优化默认权限提醒对话框相当重要,这大大提升了PermissionX用户体验,同时大大降低了PermissionX使用成本,因为自定义对话框总体来说还是比较麻烦

2.3K30

Android 必知必会 - DialogFragment 实现类似 PopupWindow 效果

使用总结 做一些业务,但是目标却是用 DialogFragment 实现类似 PopupWindow 效果: 只拦截自身所占空间部分事件,其余空间点击事件不处理 可以根据某个 View 定位自身位置...虽然在功能上 PopupWindow 更符合需要,但是使用 DialogFragment 代码更简洁、更方便封装功能模块。...和 FLAG_TRANSLUCENT_STATUS 主要是用来调整使用沉浸式状态栏显示自身位置不正确问题。...获取 View 位置时机 如果需要让 DialogFragment 在 onCreate() 等生命周期函数内直接调用显示到某个 View 位置处,可能无法正确获取到该 View 坐标,具体参考...,需要使用 TopFragment.getInstant(int y, boolean isTranslucentDecor) 方法,并且 isTranslucentDecor 传值为 true 。

1.6K20

DialogFragment 使用

如何使用DialogFragment 有两种方法 实现onCreateDialog方法 通过继承DialogFragment并且实现它onCreateDialog(Bundle savedInstanceState...)方法来创建一个DialogFragment,这个方法返回是一个Dialog,意味着我们需要创建一个AlertDialog,并返回。...,而是在DialogFragmentonDestroyView()回调,才会对DialogFragment进行出栈操作,所以如果你如果需要在Activity中频繁显示隐藏一个DialogFragment...,那么在dismiss需要手动调用dismissAllowingStateLoss()方法,并且再次show不能用上一个DialogFragment实例。...,所以我们如果需要对Dialog消失进行监听的话只需重写onDismiss方法即可,还有一种方式则是覆盖父类设置onDismissListener监听,但是需注意,这个监听复写,必须在父类onActivityCreate

1.6K10

Android 沉浸式解析和轮子使用

粘性标签——这就是你设置了 IMMERSIVE_STICKY 标签 UI 状态,用户会向内滑动以展示系统栏。半透明系统栏会临时进行显示,一段时间后自动隐藏。...你可以只使用其中一个,但是一般情况下你需要同时隐藏状态栏和导航栏以达到沉浸效果。...另例:需要注意dialogFragment和Dialog是有自己window,该window是属于所属Activity子window,所以设置dialogFragment和Dialog沉浸式改变是自己...关闭销毁:在activityonDestroy方法中执行,因为mImmersionBarMap存储了每个Activity对应ZanImmersionBar对象,所以当Activity关闭了需要及时释放...2.5 在 PopupWindow 中实现沉浸式 重点是调用以下方法,但是此方法会导致有导航手机底部布局会被导航栏覆盖,还有底部输入框无法根据软键盘弹出而弹出。

3.2K10

如何构建运行良好Vue组件

另一方面,因为这些组件大多数是从特定情况而来,并且不是所有人都有跨多重环境重用组件设计经验,所以这些组件许多东西都不能很好地与Vue生态系统配合使用。 “很好”是什么意思?...在探索了广泛开源组件之后,下面几点,我认为下面是如何制作一个良好运行Vue组件方式: 实现v-model兼容性 事件透明化 为正确元素分配属性 接受浏览器键盘导航规范 使用事件优先于回调 限制组件样式...不过,Vue 确实为我们提供了一种以编程方式访问应用于组件侦听器方法,因此我们可以将它们分配到正确位置:$listener对象。 再一想,原因很明显:这允许我们将侦听器传递到组件正确位置。...,也是编写要在生态系统中正常运行组件正确处理最重要事情之一。...使用事件优先于回调 当涉及到从组件到其父组件数据通信和用户交互,有两个常见选择:props中回调函数和事件。

3.6K20
领券