本人开发中遇到一个百思不得其解的问题。
两个Activity:a,b.
在a里面使用Bundle放入要传入的数据,这里假设putString(“abc”,"def")。(putInt等其他数据也是同样的运行结果!?)然后启动b。
在b里面解开Bundle传入的数据。
然后奇怪的事情发生了。
Intent intent=this.getIntent();
Bundle b=intent.getExtras();
String s=b.getString("abc");//其他的数据类型我试过,运行结果一样!???
问题的爆发点:
if(s=="def"){ //if(b.getString("abc")=="def")运行结果一样
根本就不会执行!!!!
}但是改成
if(s!="def")就会执行!!!!!!
这是为什么?
我明明放进去的数据是"def"(或者是putInt("abc",123)回来照样!=123才会执行!!!???)最气人的就是我用界面的setText()来看看到底b.getString("abc")解出来的是什么。
结果明白无误的显示:"def" 引号是我在这里加的。显示的时候当然是def了。大家有遇到的吗?
两个Activity:a,b.
在a里面使用Bundle放入要传入的数据,这里假设putString(“abc”,"def")。(putInt等其他数据也是同样的运行结果!?)然后启动b。
在b里面解开Bundle传入的数据。
然后奇怪的事情发生了。
Intent intent=this.getIntent();
Bundle b=intent.getExtras();
String s=b.getString("abc");//其他的数据类型我试过,运行结果一样!???
问题的爆发点:
if(s=="def"){ //if(b.getString("abc")=="def")运行结果一样
根本就不会执行!!!!
}但是改成
if(s!="def")就会执行!!!!!!
这是为什么?
我明明放进去的数据是"def"(或者是putInt("abc",123)回来照样!=123才会执行!!!???)最气人的就是我用界面的setText()来看看到底b.getString("abc")解出来的是什么。
结果明白无误的显示:"def" 引号是我在这里加的。显示的时候当然是def了。大家有遇到的吗?
不过我在我的贴子里说了。我放进int,double也是一样的问题。
为了让问题简单一点这里只说int
int是原始类型。可是一样会有这个问题
Activity1里面:putInt("a",123);
Activity2里面:
if(b.getInt("a")==123){
没有执行
}反倒是
if(b.getInt("a")!=123){
执行了!
}int不应该有String那样的问题啊?
程序:
Bundle b = myIntent.getExtras();
int n = b.getInt("key");
if(b.getInt("key") == 123){
System.out.println("a --- " + n);
}
else
System.out.println("b --- " + n);
结果:
12-18 16:22:07.731: I/System.out(278): a --- 123
我对Java就是一个因为Android而开始使用的门外汉。我还真没有想什么面子的问题。我确实是不明白而到这里来虚心求教的。但是某人实在是缺乏一个人最起码的教养。出口成脏实在是不应该。
关于int我这里确实是有这个奇怪的现象。
对了,一直忘了说了:我的模拟器设定的是版本1.6
出问题也是在模拟器里。真机没有试过。
Activity1里面:putInt("a",123);
Activity2里面:
if(b.getInt("a")==123){
没有执行
}
if(b.getInt("a")==123){ 请你把这一句的 双引号 去掉 谢谢
此类问题,被骂也是正常的!要是放到stockflow,估计被骂得更惨