笔记34--ProgressDialog调用dismiss()不消失、null是什么(dead code问题)

news/2024/7/15 19:06:36

知识补充:android开发中将十六进制颜色代码转换为int类型数值方法 : Color.parseColor("#00CCFF") 返回 int 数值;


1、null是什么:null虽然能代表一个不确定的对象,但null本身不是对象,也不是Object的实例。

今天在代码中遇到个问题:


没错,就是dead code(死代码,即不会执行的代码)。需明确几个问题:

1)str为null时,若调用str的函数,则会报异常。

2)判断str是否为null,应该用str==null

OK,继续:当执行第一个if语句时,若str为null,将直接抛出异常,不再执行下面的判断条件,所以下面语句不会执行。

改正方法,只需把第二个if语句移到第一个if语句之前。所以,在判断字符串是否为null时,应该放在第一条,放弃其他判断条件的前面。


2、ProgressDialog

先说两种正确的调用方式:

1)<span style="white-space:pre">	</span>Private ProgressDialog pd;
	pd=new ProgressDialog(this);
	pd.setMessage("就是这么帅");
	pd.show();
//	pd.setCancelable(false);
//	pd.setCanceledOnTouchOutside(false);
	pd.dismiss();
2)<span style="white-space:pre">	</span>Private ProgressDialog pd;
	pd=pd.show(this, null, "咋就这么帅");
//	pd.setCancelable(false);
//	pd.setCanceledOnTouchOutside(false);
	pd.dismiss();
再说一种错误的方式:

<span style="white-space:pre">	</span>Private ProgressDialog pd;
	pd=new ProgressDialog(this);
	pd.show(this, null, "咋就这么帅");
//	pd.setCancelable(false);
//	pd.setCanceledOnTouchOutside(false);
	pd.dismiss();
此种方式ProgressDialog并不消失,虽然你很确定已经执行dismiss()。

说说原因:pd.show()函数返回void,而pd.show(context, title, message)函数返回ProgressDialog。意味着:show()并不生成新的ProgressDialog对象,而show(context, title, message)返回一个新的ProgressDialog对象。则当你调用完pd=new ProgressDialog(this);之后再调用pd==pd.show(this, null, "咋就这么帅");则会生成两个ProgressDialog对象,而只有一个引用。第一个对象将不会再被引用到,所以不会消失。









http://www.niftyadmin.cn/n/3401179.html

相关文章

Excel表数据导入Sql Server数据库中

C#、ASP.NET中将Excel表中的数据导入到Sql Server数据库中对应的表中。这里我们将E:/test.xls中Sheet1表中的数据导入到test数据库中的my_test表中。软件&#xff1a;VS2005&#xff0c;SQL Server2000,test.xls中Sheet1表中有三个字段&#xff0c;编号、名称、备注。具体内容如…

用java完成C#同样的DES对称加密

在一个项目中&#xff0c;客户用C#实现了DES加密&#xff0c;由于需要和java方面的程序进行数据交互&#xff0c;所以必须配合进行加解密工作。客户提供了密钥和向量&#xff0c;我看了看代码&#xff0c;c#做这个事情还蛮简单。 用java实现关键是我不字段怎么设置向量&#xf…

笔记35--ListView/GridView/ExpandableListView注意事项

1、如何删除ListView/GridView/ExpandableListView中的数据 1&#xff09;首先要删除ListView的某一项或某些数据&#xff0c;都必须删除数据源中的数据&#xff0c;否则无效。 2&#xff09;要删除ListView/GridView/ExpandableListView中的数据时&#xff0c;一定要用倒序删…

System.Configuration 的引用方法

读取connectionStrings配置节 ///<summary> ///依据连接串名字connectionName返回数据连接字符串 ///</summary> ///<param name"connectionName"></param> ///<returns></returns> private static string GetConnectionString…

Resharper 5.0 注册码

Resharper 5 提供了支持 Visual Studio 2010 的能力。 官方地址&#xff1a;http://www.jetbrains.com/resharper/index.html 在官方网站可以下载得到30天试用的版本 注册码出自地址&#xff1a;http://kb.cnblogs.com/a/1628928/ 感谢共享 User Name: User Key: D9d09DSYJel9I…

12123

123 1234\ 12345

XPath读取Xml内容

<?xml version"1.0" encoding"ISO-8859-1"?><bookstore> <book> <title lang"eng">Harry Potter</title> <price>29.99</price> </book> <book> <title lang"eng">…

笔记36--Intent直接传值和通过Bundle传值区别

举例说明下&#xff1a;摘自http://blog.csdn.net/yanzi1225627/article/details/26869035 例子1&#xff1a; 我现在要从A界面 &#xff0c;分别跳转到B界面和C界面&#xff0c;这样的话 我就需要写2个Intent&#xff0c;如果你还要涉及的传值的话&#xff0c;你的Intent就要…