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

DialogFragment踩坑记

普通的Fragment还是DialogFragment 同时设置不要Title跟背景 隐藏Dialog 不保留活动 显示的逻辑 推荐使用DialogFragment 要选android X下的DialogFragment...DialogFragment有两个不同的包名 androidx.fragment.app.DialogFragment android.app.DialogFragment 为了兼容各个Android...checkStateLoss,就可以轻易规避这个问题了 特别强调的是,这个报错自测阶段很不容易暴露出来,但是一上线上环境就容易发生,需要注意规避 不保留活动 这是一个不得不考虑的场景,实际情况下,发生了不保留活动...onResume的时候,触发Dialog的显示,代码就不贴了 推荐使用DialogFragment 建议展示Dialog的地方,统一使用DialogFragment,更好的处理生命周期的各种场景,而且在...Fragment回收后,也可以自动帮我们关闭Dialog,避免逻辑异常 public void onDestroyView() { super.onDestroyView

2.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TPC基准程序及tpmc值-兼谈在使用性能度量时如何避免误区

    TPC基准程序及tpmc值 ─ 兼谈在使用性能度量时如何避免误区  今天的用户在选用平台时面对的是一个缤纷繁杂的世界。用户希望有一种度量标准,能够量化计算机系统的性能,以此作为选型的依据。...本文以TPC基准程序为例,给出一 些实际建议,以帮助用户避免进入这些误区。一、什么是TPC和tpmC?  tpmC值在国内外被广 泛用于衡量计算机系统的事务处理能力。但究竟什么是tpmC值呢?...二、如何衡量计算机系统的  性能和价格  在系统选型时,我们一 定不要忘记我们是为特定用户环境中的特定应用选择系统。切忌为了“与国际接 轨”而盲目套用“国际通用”的东西。...在使用任何一种 性能和价格度量时,一定要弄明白该度量的定义,以及它是在什么系统配置和运 行环境下得到的,如何解释它的意义等。下面我们由好到差讨论三种方式。...在使用TPC-C时,我们应该清楚地知道:我的应用是否符合 批发商模式?事务请求是否与表1近似?对响应时间的要求是否满足表1?如果都不 是,则tpmC值的参考价值就不太大了。

    1.6K20

    IGNORE,REPLACE,ON DUPLICATE KEY UPDATE在避免重复插入记录时存在的问题及最佳实践

    参考博客1中介绍了三种在MySQL中避免重复插入记录的方法,本文将在简单介绍这三种用法的基础上,深入分析这其各自存在的问题,最后给出在实际生产环境中对该业务场景的最佳实践。...当该值为1时(默认值),对于“Simple inserts”(要插入的行数事先已知)通过在mutex(轻量锁)的控制下获得所需数量的自动递增值来避免表级AUTO-INC锁, 它只在分配过程的持续时间内保持...由此可知,在实际生产环境中,几乎不太有使用该关键字的场景,因为业务上是需要当出现唯一键冲突时更新某些字段的,而不是直接忽略。...从这个角度来说,主从不一致问题并非这三个方案所特有,需要一种统一的机制来解决(比如当主库的auto_increment字段变更时同步到从库,或者在主从切换时先手动同步一次auto_increment值)...对于这种情况,建议直接给上层返回操作失败,而不要再考虑重新insert,以避免陷入死循环。该方案适合并发度不太高的场景,因而大多数情况下直接insert能执行成功,从而避免执行两次sql操作。

    2.3K23

    在代码上线时如何避免多台服务器代码不一致引发脏数据呢?

    大型的互联网产品总会有多台服务器支撑整个产品系统的运行,如果发布新版本代码的时候(比如我们公司还是最暴力的复制/粘贴,当然有自己的自动上线工具也不太可能避免这种问题),由于多台机器代码上线会有一定的延迟...,造成的结果可能是机器代码版本不一致,导致处理请求造成不同的处理结果,引发脏数据问题,应该如何避免呢?...首先暂停业务方对于支付服务的调用,之后的业务方请求记录操作日志,交易系统升级,升级完毕之后恢复业务方支付调用,通过服务恢复暂停期间操作日志,起补偿作用; - 如果出现脏数据说明你们分流出现了问题,当部署时,

    1.6K50

    Android 必知必会 - DialogFragment 使用总结

    扩展阅读:Dialog 在屏幕翻转时的处理 无标题栏/全屏 在基本用法里代码注释有设置主题的地方,下面详细说下两种方法下设置无标题栏和实现全屏的方式: 无标题栏 对于方法 ① : @Override public...应用场景区别 文章一开始简单总结了方法 ① 和方法 ② 的应用场景,这里说明下: 从基本的用法中可以看到方法 ① 为简单的替代 Dialog 提供了非常方便的创建方式,比方法 ② 有优势 方法 ① 在使用了多线程...protected Boolean doInBackground(String... params) { // 一些网络请求 // 成功时...return true; // 异常时 return false; } @Override protected void onPostExecute...扩展阅读: 详细解读 DialogFragment Android Dialog/DialogFragment宽度高度修改/全屏,自定义样式 Full Screen DialogFragment in

    4.3K31

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

    hideSoftInputFromWindow(binding.etChat.windowToken, 0) } 复制代码 在DialogFragment显示时弹出软键盘 在DialogFragment...消失时关闭软键盘 dialog关闭分为几种情况,处理方式不一样: 1.用户手动调用DialogFragment.dismiss() 这时可以重写dismiss方法,在调用之前关闭软键盘。...自定义Dialog在dismiss之前通知 DialogFragment 关闭软键盘 转变思路,既然在 DialogFragment 中无法提前监听dialog关闭,那就自定义Dialog重写dismiss...方法,在Dialog关闭之前告知 DialogFragment 关闭软键盘 class EditDialog(context: Context?...最后,还有一种方式就是使用全屏dialog,在原先空白区域加一个透明的View,设置view的点击事件去关闭软键盘和弹窗,这样就避免了点击空白处关闭的问题。

    5.2K40

    android推荐使用dialogFrament而不是alertDialog

    DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。...2、 好处与用法 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。...且DialogFragment也允许开发者把Dialog作为内嵌的组件进行重用,类似Fragment(可以在大屏幕和小屏幕显示出不同的效果)。...左边为模拟器,右边为我的手机~~~~~ 7、屏幕旋转 当用户输入帐号密码时,忽然旋转了一下屏幕,帐号密码不见了~~~是不是会抓狂 传统的new AlertDialog在屏幕旋转时,第一不会保存用户输入的值...可以看到,传统的Dialog旋转屏幕时就消失了,且后台log会报异常~~~使用DialogFragment则不受影响。 好了,关于DialogFragment的介绍结束~~~~ 源码点击下载

    2.4K50

    ViewBinding 与 Kotlin 委托双剑合璧

    ---- 前置知识: Kotlin | 委托机制 & 原理 & 应用[3] Kotlin | 扩展函数(终于知道为什么 with 用 this,let 用 it)[4] Java | 关于泛型能问的都在这里了...不会的, 未使用的类会在混淆时被压缩。 ---- 2. ViewBinding 的基本用法 这一节我们来介绍 ViewBinding 的使用方法,内容不多。...提示: ViewBinding 要求在 Android Gradle Plugin 版本在至少在 3.6 以上。...答:Activity 实例和 Activity 视图的生命周期是同步的,而 Fragment 实例和 Fragment 视图的生命周期并不是完全同步的,因此需要在 Fragment 视图销毁时,手动回收绑定类对象...在 Fragment 中使用 ViewBinding 需要注意在 Fragment#onDestroyView() 里置空绑定类对象避免内存泄漏。

    1.7K20

    Android 撸起袖子,自己封装 DialogFragment

    本文的主要内容 DialogFragment 是什么 创建通用的 CommonDialogFragment 实现各种类型的 DialogFragment 在写正文之前,先来一波效果展示吧 ?...DialogFragmentDemos.gif 一、DialogFragment 是什么 DialogFragment 在 Android 3.0 时被引入,是一种特殊的 Fragment,用于在 Activity...在 DialogFragment 产生之前,我们创建对话框一般采用 Dialog,而且从代码的编写角度来看,Dialog 使用起来其实更加简单,但是 Google 却是推荐尽量使用 DialogFragment...基本一样的生命周期,使用 DialogFragment 来管理对话框,当旋转屏幕和按下后退键的时候可以更好的管理其生命周期 在手机配置变化导致 Activity 需要重新创建时,例如旋转屏幕,基于 DialogFragment...= null){ mCancelListener.onCancel(); } 这便是我们在构造函数中传入 OnCancelListener 的原因,当我们想要做一些取消对话框后的处理时,只要在构造函数中传入

    1.4K41

    DialogFragment 使用

    DialogFragment宽高设置无效 DialogFragment在onCreate()和onCreateView()中设置布局大小无效,因为onCreate()和onCreateView()生命周期在...= null) { window.setLayout(lp.width, lp.height); } } } DialogFragment消失操作 DialogFragment在正常Dismiss后并不会直接从当前的栈中移除...,而是在DialogFragment中的onDestroyView()回调时,才会对DialogFragment进行出栈操作,所以如果你如果需要在Activity中频繁的显示隐藏一个DialogFragment...,那么在dismiss时需要手动的调用dismissAllowingStateLoss()方法,并且再次show时不能用上一个DialogFragment实例。...DialogFragment并没有对Dialog的消失提供监听给调用者使用,但是我们通过源码分析得知,DialogFragment在onActivityCreate当中其实已经帮我们设置了onDismissListener

    1.6K10

    Android中如何动态的调整Dialog的背景深暗

    在 Android 开发中,当你使用 Dialog 或 DialogFragment 时,可以通过设置 Window 的背景变暗来突出它的可见性。这个效果是通过 dimAmount 属性来控制的。...DialogFragment 假设你正在使用 DialogFragment,那么你可以在 onCreateDialog 或 onViewCreated 方法中配置 Dialog 的窗口属性。...在 DialogFragment 中设置 dimAmount public class MyDialogFragment extends DialogFragment { @Override...dialogFragment.updateDimAmount(0.8f); // 将dimAmount调整为0.8 这样你就可以在不同情况下动态调整 Dialog 的 dimAmount 了。...Dialog 在 Dialog 中设置 dimAmount 如果你直接使用 Dialog 而不是 DialogFragment,你可以在创建 Dialog 时设置 dimAmount: Dialog dialog

    22910

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

    虽然被杀死了,但是onCreate函数在执行的时候还是只执行了一次啊,为什么会出现两个DialogFragment,这里其实就有一个DialogFragment是通过Android自身的恢复重建机制重建出来...,在异常杀死的情况下onCreate(Bundle savedInstanceState)函数的savedInstanceState参数也不是null,而是包含了被杀死时所保存的场景信息。...= null,就会执行mFragments.restoreAllState逻辑,其实这里就牵扯到恢复时重建逻辑,再被后台异常杀死前,或者说在Activity的onStop执行前,Activity的现场以及...显示,再stop A,在stop A的时候,需要保存A的现场,因为不可见的Activity都是可能被后台杀死的,比如,在开发者选项中打开不保留活动,就会达到这种效果,在启动另一个Activity时,上一个...,并在onRestoreInstanceState恢复postion,并重新赋值给Tabhost,之后FragmentTabHost在onAttachedToWindow时,就可以根据恢复的postion

    3.1K30

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

    虽然在功能上 PopupWindow 更符合需要,但是使用 DialogFragment 代码更简洁、更方便封装功能模块。...只拦截自身所占空间部分的事件,其余空间的点击事件不处理』的需求,而 FLAG_TRANSLUCENT_NAVIGATION 和 FLAG_TRANSLUCENT_STATUS 主要是用来调整使用沉浸式状态栏时显示自身位置不正确的问题...获取 View 位置的时机 如果需要让 DialogFragment 在 onCreate() 等生命周期函数内直接调用显示到某个 View 的位置处,可能无法正确获取到该 View 的坐标,具体参考...但是,如果在界面显示给用户后,DialogFragment 的显示交给用户触发的话,就不需要在意这个问题了。...总结 总的来说,这里基本完成了要求的效果,但是定位只能指定其顶部开始的位置,不方便底部定位到某个 View 的上面,因为高度自适应的话,在页面渲染完成前是不能知道它的高度的。

    1.8K20

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

    项目由MVP过渡到MVVM时,其中一个典型的重构手段就是将Presenter中的回调写法改写成在ViewModel中持有LiveData由View层订阅,比如以下场景: 在大力自习室中,当老师切换至互动模式时...使用lifecycle-runtime-ktx库中的launchWhenX方法,对Channel的收集协程会在组件生命周期 时挂起,从而避免异常。...也可以使用repeatOnLifecycle(State) 来在UI层收集,当生命周期 时,会取消协程,恢复时再重新启动协程。...发现问题 DialogFragment和Activity的通信 我们通常使用DialogFragment来实现弹窗,在其宿主Activity中设置弹窗的点击事件时,如果回调函数中引用了Activity对象...所以我们建议让Activity实现接口,在弹窗每次Attach时都会将当前附着的Activity强转成接口对象来设置回调方法。

    3.3K20
    领券