我有三项活动。当我点击按钮时,它们打开没有任何问题,但是当我想按条件打开一个活动时它不起作用。
if(s2=="Both") {
Intent i = new Intent();
i.setClassName("com.gotit.babynames", "com.gotit.babynames.BabyNameActivity");
startActivity(i);
setTitle(s2);
} else if(s2=="Boys") {
Intent j = new Intent();
j.setClassName("com.gotit.babynames", "com.gotit.babynames.Boys");
startActivity(j);
setTitle(s2);
} else {
Intent k = new Intent();
k.setClassName("com.gotit.babynames", "com.gotit.babynames.Girls");
startActivity(k);
setTitle(s2);
}
答案 0 :(得分:21)
尝试使用:
if ( "Both".equals ( s2 ) )
{
//Do something
}
s2 == "Both"
不会比较Java中的文本。
你也可以用它来忽略套管:
if ( "Both".equalsIgnoreCase ( s2 ) )
{
//Do something
}
答案 1 :(得分:5)
更好:
// "Both".equals() will prevent NullPointerException
if ( "Both".equals ( s2 ) )
{
}
这样,在s2为空
的情况下,可以避免NullPointerException答案 2 :(得分:4)
在java中,==
比较内存位置,而关键字equals
实际上比较了两个字符串。因此,请尝试s2.equals
而不是==
。
答案 3 :(得分:1)
在Java中,您不能使用==
运算符来比较两个字符串。不要使用==
,而是使用equals()
。
语法:
s1.equals("xyz")
答案 4 :(得分:0)
您正在使用==比较两个字符串,这是错误的。你必须使用.equals
e.g:
if ( s2.equals ( "Both" ) )
{
/* Your action here*/
}
答案 5 :(得分:0)
请注意==
比较记忆位置(参考),而'等于()'比较字符串内容本身。
if( "Both".equals(s2)) {
//Your logic Here
}