现在的位置: 首页 > web前端 > 正文

dialog中dismiss方法的效果

2020年07月20日 web前端 ⁄ 共 832字 ⁄ 字号 评论关闭

  dismiss:大概就是删除视图,调用Onstop回调,并把mShowing置为false。建议用dismiss,这个比cancel少一个判断,一般来说是够用了,当然如果你有CancelListener的话就用cancel。


  dialogdismiss编码


  voiddismissDialog(){


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


  return;


  }


  if(mWindow.isDestroyed()){


  Log.e(TAG,"TriedtodismissDialog()buttheDialog'swindowwasalreadydestroyed!");


  return;


  }


  try{


  mWindowManager.removeViewImmediate(mDecor);


  }finally{


  if(mActionMode!=null){


  mActionMode.finish();


  }


  mDecor=null;


  mWindow.closeAllPanels();


  onStop();


  mShowing=false;


  sendDismissMessage();


  }


  安卓dialog消失:dismiss、cancel、hide


  在我们看来dismiss和cancel效果是一样的,但是从源码看在cancel中调用了dismiss,如果调用cancel的话就可以监听cancelListener了。


  dismiss可以在任何线程,并且销毁了dialog对象。


  hide仅仅隐藏了对话框并没有销毁,如果打算用这方法来灭掉对话框就会出现问题,在Activity销毁的时候就会出现崩溃日志了,因为Activity销毁时是需要把对话框都关闭掉的。源码可以看出,hide仅仅是将view.(gone)隐藏掉而已。


  总之,dialogdismiss给大家简单的介绍了一些,希望大家多看看。


  

抱歉!评论已关闭.