自己对于使用showDialog()创建对话框的原理的一些粗略拆解

这篇博客主要介绍了作者在学习过程中对使用showDialog()创建对话框的原理进行的拆解分析。内容可能较为零散,但作者在后文会集中讲解关键方法,帮助读者理解这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说明一下,前面部分,都是拆解讲的,可能很乱。

后面部分,我会把最主要的方法,一次性说。


下面的,都是看着源码一步一步来的
以下,是showDialog(1);的步骤

第一步:
showDialog(1);

进到源码,属于Activity.class的

第二步:
public final void showDialog(int id) {
	//这里不执行代码,直接传到下面
	showDialog(id, null);
}

第三步:

id传到这里了,至于Bundle? null的,上面都看出来了

public final boolean showDialog(int id, Bundle args) {
	//这里,检测mManagedDialogs是否为空的
	//这个mManagedDialogs是成员变量,我下面打出来!
	//private SparseArray<ManagedDialog> mManagedDialogs;
	if (mManagedDialogs == null) {		
		//这里,如果没有这个数组,就会去创建!
		//第一次嘛,肯定要创建
		mManagedDialogs = new SparseArray<ManagedDialog>();		
	}
	//从数组中查询是否有当前id的ManagedDialog对象,取出来。	
	//我这里有想法!它不是数组吗?如果ID随便取的话,不是很多空位吗?
	//到时候我看看SparseArray的源码,这里暂时不讨论
	ManagedDialog md = mManagedDialogs.get(id);			
        
	//这里,检测是否有这个ID对应的对话框,如果没有,进去!
	if (md == null) {
		
		//既然进来了,证明没有,new一个对话框!
		//这里说一下,ManagedDialog是Activicy.class里面的成员内部类
		//		private static class ManagedDialog {
		//			Dialog mDialog;
		//			Bundle mArgs;
		//		}




		//继续,这里创建一个成员内部类
		md = new ManagedDialog();




		//如上代码展示,通过Activity.class的方法创建ManagedDialog这个内部类的成员变量对象,Dialog对话框
		//下面,展示一下调用哪个方法进行创建操作!
		//	从下面可以知道传进来的是createDialog(id, null, args);
		//	private Dialog createDialog(Integer dialogId, Bundle state, Bundle args) {
		//		方法内部,又调用了另外一个方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值