精华内容
下载资源
问答
  • DISMISS

    2019-10-24 11:29:12
    DISMISS
  • dismiss

    千次阅读 2018-08-31 18:57:06
    问题bug java.lang.IllegalStateException: Can not perform this action after onSaveIns 解决方法 public void dismiss() { dismissAllowingStateLoss(); }
    问题bug
    java.lang.IllegalStateException: Can not perform this action after onSaveIns
    解决方法
    public void dismiss() {
        dismissAllowingStateLoss();
    }
    展开全文
  • east_dismiss-源码

    2021-03-05 01:41:04
    east_dismiss
  • Dismiss Notification API

    2020-12-27 16:39:15
    m running into an error when trying to dismiss a single notification using <em>Mastodon.py</em>. It uses a POST request to <code>/api/v1/notifications/dismiss</code> but the answer I was given on ...
  • 作者CoderZCC,源码ZCategoryTool,手势控制Dismiss效果
  • modal-dismiss-issue-源码

    2021-04-01 02:59:06
    modal-dismiss-issue
  • dismiss和cancel在我们看来两者效果都是一样的,其实看下源码就知道cancel肯定会去调dismiss的,不过如果我们调用的cancel的话就可以监听DialogInterface.OnCancelListener,不调用cancel的话就只能监听...

    dismiss和cancel在我们看来两者效果都是一样的,其实看下源码就知道cancel肯定会去调dismiss的,不过如果我们调用的cancel的话就可以监听DialogInterface.OnCancelListener,不调用cancel的话就只能监听DialogInterface.OnDismissListener。

    /**

    * Cancel the dialog. This is essentially the same as calling {@link #dismiss()}, but it will

    * also call your {@link DialogInterface.OnCancelListener} (if registered).

    */

    public void cancel() {

    if (!mCanceled && mCancelMessage != null) {

    mCanceled = true;

    // Obtain a new message so this dialog can be re-used

    Message.obtain(mCancelMessage).sendToTarget();

    }

    dismiss();

    }

    dismiss可以在任何线程调用,但是最好不要覆写dismiss方法,实在需要就在onStop里去override。

    /**

    * Dismiss this dialog, removing it from the screen. This method can be

    * invoked safely from any thread. Note that you should not override this

    * method to do cleanup when the dialog is dismissed, instead implement

    * that in {@link #onStop}.

    */

    @Override

    public void dismiss() {

    if (Looper.myLooper() == mHandler.getLooper()) {

    dismissDialog();

    } else {

    mHandler.post(mDismissAction);

    }

    }

    在dismissDialog里调用了onStop。

    void dismissDialog() {

    if (mDecor == null || !mShowing) {

    return;

    }

    if (mWindow.isDestroyed()) {

    Log.e(TAG, "Tried to dismissDialog() but the Dialog's window was already destroyed!");

    return;

    }

    try {

    mWindowManager.removeViewImmediate(mDecor);

    } finally {

    if (mActionMode != null) {

    mActionMode.finish();

    }

    mDecor = null;

    mWindow.closeAllPanels();

    onStop();

    mShowing = false;

    sendDismissMessage();

    }

    }

    hide方法,注释上说了hide只是隐藏了对话框并没有销毁,如果打算用这方法来销毁对话框就会出现问题,在Activity销毁的时候就会出现崩溃日志了,因为Activity销毁时是需要把对话框都关闭掉的。不然会报窗口泄露异常。

    /**

    * Hide the dialog, but do not dismiss it.

    */

    public void hide() {

    if (mDecor != null) {

    mDecor.setVisibility(View.GONE);

    }

    }

    展开全文
  • present 和Dismiss

    2017-04-21 15:44:44
    最近用到了模态视图,简单了解了下. 从VC1 present VC2 ,在从VC2 present VC3 VC1 就充当presenting view controller VC2就是presented view controller ...在VC2 中dismiss 其实消失的是VC3 如果只有:从VC1

    最近用到了模态视图,简单了解了下.
    从VC1 present VC2 ,在从VC2 present VC3
    VC1 就充当presenting view controller
    VC2就是presented view controller
    重点:
    如果:从VC1 present VC2 ,在从VC2 present VC3
    在VC2 中dismiss 其实消失的是VC3

    如果只有:从VC1 present VC2
    在VC2中dismiss 同样它会找从VC2 present 的视图,发现找不到,就会找从VC1 present的视图,也就把VC2 给dismiss掉了.
    有点类似先从self(本身)找,如果没有发现就找super(父类)

    要想dismiss 掉VC2 正确的做法是用代理回调给VC1 让VC1来dismiss掉VC2

    展开全文
  • Dialog dismiss 流程

    千次阅读 2016-10-21 14:39:13
    Dialog.dismiss(): 如果是在非UI线程调用,会将dismiss这个指令*schedule到UI线程的handler来异步执行* 否则同步执行。 Dialog.dismissDialog()。 WindowManagerImpl.removeViewImmediate(mDecor), mDecor在Dialog ...
    1. Dialog.dismiss():
      • 如果是在非UI线程调用,会将dismiss这个指令schedule到UI线程的handler来异步执行
      • 否则同步执行。
    2. Dialog.dismissDialog()。
    3. WindowManagerImpl.removeViewImmediate(mDecor), mDecor在Dialog show()的时候调用mWindow.getDecorView()获得。
    4. WindowManagerGlobal.removeView(view, true): WindowManagerGlobal是进程级的单例,本进程内所有Window相关信息进行集中管理的结点,也包括了ViewRootImpl(Window的View树根节点)
      • 根据传入的view通过findViewLocked()在mViews**(维护了所有当前Window的DecorView)**中找到其所属Window对应的index.
    5. WindowManagerGlobal.removeViewLocked(int index, boolean immediate):
      • 根据index获得Window的ViewRootImpl.
      • 回调本进程的InputMethodManager的windowDismissed(mViews.get(index).getWindowToken())来告知输入法窗口某个Window即将dismiss,从而使得输入法窗口消失(finishInputLocked(), 如果当前输入法的servedView属于该Window的话)。
      • 调用ViewRootImpl的die(immediate), 如果返回true, 代表die()没有被立刻执行,而是schedule(defer)到将来。
        • 如果defer, 那么将此View加入到mDyingViews来保持追踪。
    6. ViewRootImpl.die(boolean immediate):
      • 如果需要立刻执行(immediate == true)或者当前没有在进行Traversal(ViewRootImpl的一个操作,可以简单理解为对整个View树的measure+layout+draw)中,那么可以立即开始(doDie()), 进而返回false代表操作没有被defer.
      • 否则schedule一个MSG_DIE来defer die()。
    7. ViewRootImpl.doDie():
      • 如果已经dead(mRemoved == true), 不需要再死一次。
      • 标记为dead(mRemoved = true)
      • 如果该View之前被添加到了WMS中(mAdded = true), 调用dispatchDetachedFromWindow()来分发detach。
        • dispatchDetachedFromWindow():
          • 会回调其AttachInfo的ViewTreeObserver的dispatchOnWindowAttachedChange(false)
          • 会回调ViewRootImpl承载的View(mView)的dispatchDetachedFromWindow将detach的消息分发到整个View tree。
          • mView(DecorView)的parent设为null(assignParent(null))
          • mView = null, 释放DecorView。
          • 释放Surface(mSurface = null)。
          • 调用mWindowSession.remove(mWindow)来将ViewRootImpl对应的Window从WMS中移除
          • 释放InputChannel,不再接收input信息。
          • unscheduleTraversals()取消之前schedule的Traversal任务(窗口都消失了,不再需要)。
      • 如果添加到了WMS,但是还从来没有进行过Traversal(mFirst == false)
        • invalidateDisplayLists()
        • destroyHardwareRenderer()
        • 下面的逻辑会判断mView != null, 不过在4.4的源码中,很奇怪,因为如果mAdded, 那么dispatchDetachedFromWindow()必然会将mView设置为null, 而这个判断进行的前提也是mAdded,即在进入这个判断中时,mView就一定是null了,mView != null的逻辑似乎永远不会进入到,因此这段逻辑不分析。
      • 重置mAdded = false。
      • WindowManagerGlobal.getInstance().doRemoveView(this), 告知WindowManagerGlobal该ViewRootImpl已经完成了自己的remove相关操作(WMS那边也已经知晓并开始remove了),后者会彻底消除ViewRootImpl在其内部的相关信息:包括在mRoots, mParams,mDyingViews中的信息.
      • 至此,Window在本地Window体系中的信息基本都被清除了。
    8. Session: Session是每个ViewRootImpl和WMS通信的RPC节点
      • remove(IWindow window)最终会RPC调到WMS的removeWindow(this, window)
    9. WMS.removeWindow(Session session, IWindow client):
      • 通过windowForClientLocked(session, client, false)获取到Window对应的WindowState(win, 等于是该Window在WMS体系中的代理人和信息保存者).
      • 为了多线程安全,会synchronized mWindowMap这个保存所有WindowState的map再向下执行。
      • removeWindowLocked(session, win).
    10. WMS.removeWindowLocked(Session session, WindowState win)
      • win.disposeInputChannel(), 注销对应的mInputChannel,不再接收input消息。
      • 如果window之前是可见的,并且已经为其分配了Surface:
        • 会安排一个合适的结束动画(WindowManagerPolicy.TRANSIT_EXIT/TRANSIT_PREVIEW_DONE)
        • 使用window的WindowStateAnimator来驱动此动画(applyAnimationLocked().
        • 如果确实发起了结束动画, 那么会将winState的mExiting设置为true.
          • 并且设置win.mRemoveOnExit = true, win.mDisplayContent.layoutNeeded = true
          • performLayoutAndPlaceSurfacesLocked()来开始动画。
          • 结束函数,真正的remove会在动画结束以后进行。
      • removeWindowInnerLocked(session, win):
      • 如果之前window是可见的并且其消失会导致Configuration的变化(比如横屏变竖屏),那么会schedule一个H.SEND_NEW_CONFIGURATION来处理新的Configuration.
      • updateFocusedWindowLocked, 让新的window获取焦点。
    11. WMS.removeWindowInnerLocked(Session session, WindowState win):

      • 遍历Window的ChildWindow,递归的对每个childWindow进行removeWindowInnerLocked.
      • 如果当前输入法的target是此Window,那么显然需要为输入法找到下一个合适的target(moveInputMethodWindowsIfNeededLocked(false))
      • 将window从PhoneWindowManager中移除(mPolicy.removeWindowLw(win))
      • 调用WindowState的removeLocked()来让其完成自己内部的资源释放清理。
      • 将相关信息从mWindowMap移除。
      • windows/mPendingRemove/mResizingWindows中都移除此Window的相关信息。
      • 释放window的相关token, (WindowToken, AppWindowToken)
      • 如果当前WMS并不在layout过程中(mInLayout = false):
        • assignLayersLocked(windows)根据最新的windows信息(删除了此window的)来重新为window分配layer。
        • win.mDisplayContent.layoutNeeded = true, 表明此window所属的DispalyContent需要进行layout.
        • performLayoutAndPlaceSurfacesLocked() 发起一次layout.
    12. 简单的总结下:

      • Dialog的dismiss本质是其Window从WMS中被remove。
      • Dialog的Window remove 流程和Activity的一致
      • 某种意义上讲,Window体系有两套,本地(WindowManagerGloabl + WindowManagerImpl)和远端(Session + WMS)
      • 本地Window体系负责维护本进程(一般是一个App)所有Window相关信息
      • WMS则是整个系统的Window管理者和真正的操作执行者
      • Window的remove要先在本地(WindowManagerGlobal以及WindowManagerImlp这一套本地的Window机制)执行/登记,然后再到远端(WMS,本地的remove触发了Session向远端发起请求)执行
    展开全文
  • pop&dismiss

    2018-06-13 15:53:00
    1 //dismiss到根视图 2 - (void)dismissToRootViewController{ 3 UIViewController *vc = self; 4 while (vc.presentingViewController) { 5 vc = vc.presentingViewController; 6 } 7 ...
  • DialogFrament的dismiss

    2018-05-10 20:24:56
    DialogFrament的dismissprivate void dismossDialog() { if (null != getActivity() &amp;&amp; !getActivity().isFinishing() &amp;&amp; getDialog() != null &amp;&amp; getDialog().is...
  • 主要介绍了dialog dismiss时键盘不消失的问题浅析及两种解决方法,非常不错,具有参考借鉴价值,需要的朋友参考下
  • Dialog dismiss 失效的问题,

    千次阅读 2018-12-04 10:29:53
    在我的应用中,出现了dialog 弹出后,点击dismiss()无法消失的问题; 但是点击事件确实是可以执行,但是就是不能dismiss(); 经过绘制界面以后再添加点击事件,还是不能dismiss(); submitView....
  • <div><p>You should be allowed to specify if you want to dismiss the modal by clicking the backdrop</p><p>该提问来源于开源项目:makeusabrew/bootbox</p></div>
  • 文章目录前言GitHubDemopresentingViewController和presentedViewController文档描述Xcode打印实验分析多次弹窗描述Xcode实验dismiss文档描述举个栗子总结 前言 present以及dismiss显然是iOS开发最先学到的东西了 ...
  • Popupwindow的dismiss问题

    2016-08-09 13:09:40
    在**API23**中: if(mpopupwindow!=null&&mpopupwindow.isShowing()) { mpopupwindow.dismiss(); } 会退出popupwindow,在**API22**中,运行却没有任何反应,这是怎么回事?
  • Dialog确认按钮不dismiss

    千次阅读 2017-10-17 14:26:39
    在使用AlertDialog的时候,经常会遇到这样的需求:点击【确认】之后,如果dialog内的输入内容有误,则dialog不dismiss。但实际情况是,无论点击【确认】还是【取消】,dialog都会执行dismiss操作。查看源码如下:...
  • dismiss 多个viewController

    2017-09-13 09:53:00
    控制器堆栈是dismiss掉下面的,上面的自动就dismiss。 [self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 转载于:...
  • 自定义present和dismiss转场动画,类似push和pop
  • Completion block after dismiss not being called. <p><strong>To Reproduce Steps to reproduce the behavior: <p>SwiftEntryKit.dismiss { //Call another function after dismissing the view controller. Here...
  • accept, dismiss alerts

    2017-08-08 14:14:00
    Appium comes with a default capability to accept, dismiss alerts capabilities.SetCapability("autoAcceptAlerts", true); capabil...
  • <p>added dismiss_forever option for notice to dismiss and remove <p>Fixes #1360 <h2>How has this been tested? <p>set a notice which will dismiss forever, once hide the notice, check the option has ...
  • Android 自定义Dialog无法Dismiss

    千次阅读 2015-12-14 17:49:06
    Android开发碰到了一个很奇怪的问题,同样的自定义View的Dialog 的Code在一个项目中可以dismiss,在另一个项目中却如何也无法dismiss,真心不知道问题在什么地方,查阅了一下网上的资料,找到了自定义Dialog正确且...
  • present/dismiss转场动画

    2016-05-27 17:44:09
    present/dismiss转场动画
  • 使用react-native的时候,总是会提示Dismiss ALL,总要一遍遍关闭 那么解决方法就是,在index.js文件 AppRegistry.registerComponent(appName, () => App); 这段代码之前,添加 console.ignoredYellowBox...
  • 从而导致新弹出的dialog无法操作,返回键触发dismiss的时候就抛出IllegalStateException: Bindings already cleared异常了 //定义全局起初是因为有时候activity意外退出,dialog没有销毁窗口而抛出异常 //也是为了...
  • 本文主要介绍了Android中ProgressDialog的dismiss()与cancel()方法的区别,具有很好的参考价值。下面跟着小编一起来看下吧
  • data-dismiss是bootstrap里自定义的属性,给一个元素data-dimiss属性的话,可以通过点击该元素达到让目标消失的效果。 例如:当点击按钮时,直接关闭外层alert <div class="alert alert-warning alert-...
  • AlertDialog使用很方便,但是有一个问题就是:dismiss方法和cancel方法到底有什么不同? AlertDialog继承与Dialog,现在各位看看结构图: 然后在Dialog类中找到了dismiss和cancel方法的实现。重要看dismiss...
  • data-dismiss 用法

    2017-01-30 17:03:00
    <div class="col-md-12"> <div class="alert alert-danger alert-dismissible fade in" role="alert">...button class="close" type="button" data-dismiss="alert" aria-label="Close"> <...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,840
精华内容 23,936
关键字:

dismiss