AlertDialog dismiss 和 cancel方法的区别
2011-09-07 19:06
363 查看
AlertDialog dismiss 和 cancel方法的区别
AlertDialog使用很方便,但是有一个问题就是:dismiss方法和cancel方法到底有什么不同?今天有时间,看了看源码(其实源码并不是全都那么深奥的!~~)。
AlertDialog继承与Dialog,现在各位看看结构图:
然后在Dialog类中找到了dismiss和cancel方法的实现。重要看dismiss的源码:
Java代码
public void cancel() {
if (mCancelMessage != null) {
// Obtain a new message so this dialog can be re-used
Message.obtain(mCancelMessage).sendToTarget();
}
dismiss();
}
看明白了吧! 在cancel方法中调用了dismiss方法。 但是现在还有一个问题就是:mCancelMessage是什么?
private Message mCancelMessage; // 这是源码中的声明
然后再来看源码:
Java代码
public void setOnCancelListener(final OnCancelListener listener) {
if (listener != null) {
mCancelMessage = mListenersHandler.obtainMessage(CANCEL, listener);
} else {
mCancelMessage = null;
}
}
ublic void setCancelMessage(final Message msg) {
mCancelMessage = msg;
}
现在问题清楚了,就是如果你在创建AlertDialog的时候调用了setOnCancelListener 这个mCancelMessage变量有作用,否则dismiss和cancel等同。 OK! 白白~~
相关文章推荐
- AlertDialog dismiss 和 cancel方法的区别
- AlertDialog dismiss 和 cancel方法的区别
- Android AlertDialog dismiss 和 cancel方法的区别(个人)
- AlertDialog dismiss 和 cancel方法的区别
- AlertDialog dismiss 和 cancel方法的区别
- AlertDialog dismiss 和 cancel方法的区别
- android AlertDialog.Builder dismisss方法
- Android开发,源码分析Dialog/AlertDialog的dismiss()和hide()的区别
- Android开发——diglog cancel与dismiss方法区别
- ProgressDialog的dismiss方法与cancel方法的区别
- android中dialog的dismiss()和cancel()的区别
- android中 Dialog.dismiss()、Dialog.cancel()、和Dialog.hide()的相同点和区别
- android dialog dismiss cancel hide 的区别
- Android中ProgressDialog的dismiss()与cancel()方法的区别
- 如何解决AlertDialog.Builder没有dismiss()方法
- has leaked window com.android.internal.policy.impl.PhoneWindow解决(Dialog.cancel、dismiss、hide区别)
- ProgressDialog的dismiss方法与cancel方法的区别
- Dialog 的cancel 和dismiss 方法
- dialog的cancel和dismiss方法的异同
- Dialog中cancel和dismiss的区别总结