DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。...上面会通过例子展示这些好处~ 使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。...可以看到通过重写onCreateDialog同样可以实现创建对话框,效果还是很nice的。...,第二还会报异常,因为Activity销毁前不允许对话框未关闭。...而通过DialogFragment实现的对话框则可以完全不必考虑旋转的问题。
01 概述 DialogFragment是在Android 3.0的时候被引入的, 目的是dialog也变成了碎片。DialogFragment是Fragment的子类,用于创建于用户交互的对话框。...在DialogFragment未哇哇坠地之前,我们一般用AlertDialog和Dialog来创建对话框。现在,谷歌官方不建议直接使用Dialog创建对话框。...03 用法 继承DialogFragment类,然后必须实现onCreateView(LayoutInflater, ViewGroup, Bundle)或者onCreateDialog(Bundle)...onCreateView即使用定义的xml布局文件展示Dialog。onCreateDialog即利用AlertDialog或者Dialog创建出Dialog。...2)创建Alert Dialog a、继承DialogFragment,重写onCreateDialog方法 ? 该方法返回的是一个AlertDialog实例化对象。 b、显示对话框 ?
在 Android 开发中,当你使用 Dialog 或 DialogFragment 时,可以通过设置 Window 的背景变暗来突出它的可见性。这个效果是通过 dimAmount 属性来控制的。...DialogFragment 假设你正在使用 DialogFragment,那么你可以在 onCreateDialog 或 onViewCreated 方法中配置 Dialog 的窗口属性。...public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog...window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); } return dialog; } // 如果你的DialogFragment...使用的是布局文件,需要在onViewCreated中调用上面的代码 @Override public void onViewCreated(@NonNull View view, @Nullable
onCreateView() 或者 onCreateDialog() 方法,onCreateView() 即使用自定义的 xml 布局文件来展示 Dialog,而 onCreateDialog() 即使用...(getActivity);,当我们在传入 Dialog 的时候,便会回调到此处,让 onCreateDialog() 返回我们传入的 Dialog,对接口回调不是很清楚的朋友,可以看下这篇文章 一个经典例子让你彻彻底底理解...(fragmentManager, PROGRESS_TAG); return dialogFragment; } 我们先调用了 CommonDialogFragment 的构造函数...,将一个 ProgressDialog 传进去,然后依次传入 cancelable 和 cancelListener,最后调用 show() 函数,将DialogFragment 显示出来,因为我们使用了构造函数的重载...,只要在外部调用的时候,new 一个IDialogResultListener 传进去,然后实现 onDataResult() 方法就行了 以上便是全文的内容,具体的代码以及示例我都放上 Github
如何使用DialogFragment 有两种方法 实现onCreateDialog方法 通过继承DialogFragment并且实现它的onCreateDialog(Bundle savedInstanceState...public class LoginDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle...,那么在dismiss时需要手动的调用dismissAllowingStateLoss()方法,并且再次show时不能用上一个DialogFragment实例。...DialogFragment并没有对Dialog的消失提供监听给调用者使用,但是我们通过源码分析得知,DialogFragment在onActivityCreate当中其实已经帮我们设置了onDismissListener...方法调用之后。
在 startRecording() 方法中先调用了 setFileNameAndPath 方法,初始化了录音文件的名字和保存的路径,为了让每个录音文件都有唯一的名字,我调用 System.currentMillis...,总不能让 App 跳转到另外一个界面吧,这样用户体验并不是很好,比较好的方法是显示一个对话框,让用户进行操作,既然要用对话框,必然离不开 DialogFragment,对于 DialogFragment...(bundle); return dialogFragment; } @NonNull @Override public Dialog onCreateDialog...进行录音的播放,然后调用 updateSeekbar() 实时更新进度条的内容。...Android 撸起袖子,自己封装 DialogFragment 手把手教你从零开始做一个好看的 APP
而创建 DialogFragment 有两种方式: 覆写其 onCreateDialog 方法 — ① 覆写其 onCreateView 方法 — ② 虽然这两种方式都能实现相同的效果,但是它们各有自己适合的应用场景...FragmentManager 会自动管理 DialogFragment 的生命周期。...Dialog dialog = new Dialog(getActivity(), R.style.CustomDialog); // 关闭标题栏,setContentView() 之前调用...) 常用的形式大多是宽度上和屏幕一样宽,高度自适应,下面直接看代码: 方法 ① : @Override public Dialog onCreateDialog(Bundle savedInstanceState...方法 ① 和方法 ② 创建 DialogFragment 的一些状态并不是完全一致。
消失时关闭软键盘 dialog关闭分为几种情况,处理方式不一样: 1.用户手动调用DialogFragment.dismiss() 这时可以重写dismiss方法,在调用之前关闭软键盘。...,windowDismissed方法已经调用,所以无法关闭软键盘。...再来看 mServedView不为null的值,发现是我 DialogFragment 依附的 activity的布局控件,可以理解为当前获取焦点的控件,因此可以传入activity中当前焦点所在的view...= null } override fun onCreateDialog(savedInstanceState: Bundle?)...的onCreateDialog中创建自定义的Dialog,设置关闭回调。
要想实现一个更加完善的对话框,需要在自定义对话框时继承DialogFragment类。下面用一个简单的提示对话框进行说明,该对话框主要是显示一段文字,然后由用户选择“确定”或者“取消”。...再次重写onCreateDialog方法,往对话框界面上添加具体的视图布局,这里的视图布局可从xml文件中获取,也可在代码中一个个添加。...onCreateDialog方法后面当然要依例添加AlertDialog.Builder对象,依次设置标题、内容、图标、确定按钮、取消按钮等元素,其中确定按钮的点击事件需要调用回调接口的处理方法。...最后便是在主页面中调用自定义的提示对话框。...文件对话框与上面的提示对话框一样,也是从DialogFragment类继承而来,主要步骤与ConfirmDialogFragment大同小异,其主要难点在于文件和文件夹的处理。
这里我使用的是DialogFragment来实现的,可以复用。...先贴一下获取View坐标的一些资料: Android View各种尺寸位置相关的方法探究 Android获得控件在屏幕中的绝对坐标 合适的时机 要想获得View的坐标和长宽,必须要等到View...} }); //do something return view; } /* * 对于:DialogFragment *...在 onCreateDialog()中为View添加addOnGlobalLayoutListener * PS: start-end之间的是重点,其他可以不看 */ @Override...public Dialog onCreateDialog(Bundle savedInstanceState) { LayoutInflater inflater = getActivity
,以及设置一个方法调用接口 public class ToastListenerClass { private ToastListener toastListener; public...而这一切的开关都在 listenerClass.getToastListener()方法的调用。...效果入下 之前只是简单的说了一下接口,只是知道它定义以后,设置并回调…OK我再举个栗子,加深一下印象 使用Interface进行传值 (设置一个DialogFragment页面) public class...LoginDialogFragment extends DialogFragment { private EditText mUsername; private EditText...void onLoginInputComplete(String username, String password); } @Override public Dialog onCreateDialog
(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求,在定位结束后,在合适的生命周期调用onDestroy()方法 在单次定位情况下,定位无论成功与否,都无需调用...定义一个DialogFragment展示数据,不熟悉DialogFragment的同学请参考 AltertDialog在DialogFragment中的使用 package com.pansoft.oilgas.gaodenavigation...currentLocation =getArguments().getParcelable(KEY_MSG); } } @Override public Dialog onCreateDialog...4.在地图上标注我的位置 在原来代码的基础上,添加地图MapView 不熟悉的同学,请参考 加载一张高德地图 在onCreate中添加,获取我的位置的相关部分 // show my location...(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求 在定位结束后,在合适的生命周期调用onDestroy()方法 在单次定位情况下,定位无论成功与否,都无需调用
之前某应用就存在长时间不调用,再次调用时处于hang,等待10分钟返回3113的连接错误。今天正好同事也问了个相同的问题,也是应用长时间不调用就出现这种情况。 ...以前对于这种问题进行过排查,但一直未解决,针对今天的这个系统的问题,还是按照老方法检查, 1. 检查应用日志,确实长时间等待后报3113的错误。 2....检查数据库的PROFILE中idle_time参数,此处设置的是DEFAULT的UNLIMITED,说明超时不会是由数据库用户PROFILE配置导致的。 3....写个脚本定时调这个应用,保证40分钟内有调用,就不会出现超时的问题了。 2. 通过Oracle的一些机制自动探测数据库连接来间接保证40分钟内应用有调用。...这篇文章介绍的DCD就是一种比较不错的方法:http://sundog315.itpub.net/post/308/530331。
如果在实例创建之后添加新的属性到实例上,他不会触发视图更新。...差不多的意思就是,在初始化实例时,VUE会将对象属性转化为带getter/setter的,只有setter/getter,页面上的数据才能被监听并修改。...这里记一个开发中遇到的问题: 代码如下:在回调方法里又再次请求后端,然后又对对象内部属性赋值,结果可以看第二张图(浏览器的调试图) ?...可以看到,这个menu对象的children和number属性有值,但是没有setter/getter方法, ? 渲染后的结果图如下,第二次回调方法里的数据未被渲染到页面, ?...而要让后面添加的数据在页面被渲染,就要让VUE知道我们新添加的属性,使用vue.$set (object,key,value)方法添加属性 修改: ?
今天分析一下,flink table聚合udf AggregateFunction的open函数未被调用的bug。...但是flink内部coden的时候,被完全解析成了不同的聚合函数。...分别执行两个sql之后,你会发现: 情景一:value of flag is : 100 情景二:value of flag is : 1 之所以会情景二没有被更改为 100 主要原因是open函数没有调用...,比如权重阈值等,都变的行不通了。...但是这个也体现出了我们码农的存在的必要性。 本文举例仅仅是一种窗口操作,更多的窗口聚合是否会调用aggregateFunction的open方法,可以仔细阅读AggregateUtil。
,如何处理新任务 // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行 executor.setRejectedExecutionHandler...,后面的线程又一直在调用这个doGet方法; 但是又获取不到连接,所以就一直阻塞在哪里,直到连接超时HttpClient内部三个超时时间的区别 然后myAsync 这个线程池的线程也是有限的, Schedule...每秒都在执行,很快线程不够用了,然后就阻塞了testDoGet这个定时任务了; 为了确认是 流未关闭的问题 我们可以看看服务器的TCP连接 netstat -anp | grep 进程号 ?...CallerRunsPolicy :它直接在 execute 方法的调用线程中运行被拒绝的任务;如果执行程序已关闭,则会丢弃该任务 就是说线程池的队列也满了,就会触发丢弃策略,CallerRunsPolicy...是用调用线程池的那个线程来执行; ThreadPoolExecutor里面4种拒绝策略( 为了不让他们互相影响,改下线程池的丢弃策略就行了 Spring Boot 定时任务单线程和多线程
dialog.show(); } 自定义布局弹框 可以通过创建一个自定义布局,然后调用 AlertDialog.Builder对象上的 setView()方法将其添加到 AlertDialog...android:textSize="16sp" /> 在 DialogFragment...的 onCreateDialog()方法中加载自定义布局文件,并添加到 AlertDialog.Builder中,在按钮点击事件中获取用户名和密码 public class LoginDialogFragment...extends DialogFragment implements View.OnClickListener { public static final String USERNAME =...super.onCreateView(inflater, container, savedInstanceState); } @NonNull @Override public Dialog onCreateDialog
不会的, 未使用的类会在混淆时被压缩。 ---- 2. ViewBinding 的基本用法 这一节我们来介绍 ViewBinding 的使用方法,内容不多。...首先,我们梳理一下我们要委托的内容与需求,以及相应的解决办法: 需求 解决办法 需要委托 ViewBinding#bind() 的调用 反射 需要委托 binding = null 的调用 监听 Fragment...反射调用 bind 函数的目的就是获得一个 ViewBinding 绑定类对象,或许我们可以试试把创建对象的行为交给外部去定义,类似这样用一个 lambda 表达式实现工厂函数: FragmentViewBindingPropertyV2...Fragment#requireView() 会返回 Fragment 的根节点,但要注意在 onCreateView() 之前调用 requireView() 会抛出异常; 问题 7、FragmentTestBinding...Use viewBinding delegate after onCreateDialog" } val window = checkNotNull(dialog.window) { "
1,完善electron的拖拽。里面细节较多,和wke模式不同的是需要处理多线程逻辑。 另外::DoDragDrop一直提示CoInitialize未调用。实际上我调用了。...用ida看了下DoDragDrop的实现 主要是IsOleInitialized这个出错了。...最后找到是OleInitializeEx初始化的。
这样,每次获取Fragment实例,都是调用newInstance方法获得,而不是调用它的构造函数。...可在该方法实例化Activity的一个回调对象,就能在Fragment中调用Activity的回调方法,这样设计的好处是Activity无需调用set***Listener方法来设置监听器接口。...onCreateView : 创建Fragment的视图,在onCreate之后调用。...Fragment的子类 Android还给Fragment设计了几个子类,分别用在某些特殊的场合,具体说明如下: DialogFragment : 用于对话框的碎片。...参见《Android开发笔记(二十三)文件对话框FileDialog》,对话框页面逻辑要写在onCreateDialog方法中,另外DialogFragment也实现了Dialog的常见方法。