Android 虽然contiditon为true,但代码没有输入if语句
我正在开发一款android应用程序。我的第一个活动中有一个字符串。我使用Android 虽然contiditon为true,但代码没有输入if语句,android,android-intent,Android,Android Intent,我正在开发一款android应用程序。我的第一个活动中有一个字符串。我使用intent.putExtra()将该字符串传递给我在第一个活动中启动的第二个活动。以下是活动代码的相关部分: 第一项活动 final ListView lv = (ListView) findViewById(R.id.listView1); lv.setOnItemClickListener(new OnItemClickListener() { @Override
intent.putExtra()
将该字符串传递给我在第一个活动中启动的第二个活动。以下是活动代码的相关部分:
第一项活动
final ListView lv = (ListView) findViewById(R.id.listView1);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
String selectedFromList = (lv.getItemAtPosition(arg2).toString());
Intent content_umre_Intent = new Intent("com.uygulama.hacc.ContentActivity");
content_umre_Intent.putExtra("key", selectedFromList);
startActivity(content_umre_Intent);
}
});
Context context = getApplicationContext();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
String text = getIntent().getStringExtra("key").toString();
if(text=="abc"){
toast.show();
}
这里有些古玩。我将toast.show()
放在if语句之外,我发现它等于“abc”
然而,即使变量text
与“abc”完全相等,它也不会进入if语句
你知道为什么会这样吗?我找不到任何理由。我现在真的需要帮助
任何帮助都将不胜感激。没有什么太奇怪的…改变
if(text=="abc"){
到
比较字符串
时,==
将比较它们是否引用相同的对象。您需要.equals()
来比较它们是否具有相同的值
你可以照我说的做
if(text.equals("abc")){
但是我发布的第一个方法将保护您免受NPE
的攻击
离题
为什么在字符串上有toString()
值
String text = getIntent().getStringExtra("key").toString();
此外,如果您在活动
中,而不是在内部类或侦听器中,则可以将此
用于上下文
,而不是创建变量。这可能不会造成任何伤害,但取决于您使用的是什么上下文
,因为它可能会导致问题,因为您使用的是应用程序上下文
,而不是活动上下文
。请注意。没什么奇怪的…更改
if(text=="abc"){
到
比较字符串
时,==
将比较它们是否引用相同的对象。您需要.equals()
来比较它们是否具有相同的值
你可以照我说的做
if(text.equals("abc")){
但是我发布的第一个方法将保护您免受NPE
的攻击
离题
为什么在字符串上有toString()
值
String text = getIntent().getStringExtra("key").toString();
此外,如果您在活动
中,而不是在内部类或侦听器中,则可以将此
用于上下文
,而不是创建变量。这可能不会造成任何伤害,但取决于您使用的是什么上下文
,因为它可能会导致问题,因为您使用的是应用程序上下文
,而不是活动上下文
。请注意。尝试一下
if(text.equals("abc")){
toast.show();
}
试一试
=测试参考平等性
.equals()测试值是否相等
这是一个java字符串比较,它与equals
if(text.equals("abc")){
toast.show();
}
但我建议
if("abc".equals(text)){
toast.show();
}
因为若文本为null,第一个将抛出异常,第二个则不会,它将使用.equals(object)
如果你不担心这个案子,你也可以这么做
"abc".equalsIgnoreCase(text)
=测试参考平等性
.equals()测试值是否相等
这是一个java字符串比较,它与equals
if(text.equals("abc")){
toast.show();
}
但我建议
if("abc".equals(text)){
toast.show();
}
因为若文本为null,第一个将抛出异常,第二个则不会,它将使用.equals(object)
如果你不担心这个案子,你也可以这么做
"abc".equalsIgnoreCase(text)
如果我不知道。非常感谢,它成功了。我试图让它工作,我添加它没有任何理由:)我会在5分钟内接受你的答案OK,对我来说似乎是合理的;)很高兴它起作用了,我不知道。非常感谢,它成功了。我试图让它工作,我添加它没有任何理由:)我会在5分钟内接受你的答案OK,对我来说似乎是合理的;)很高兴它的工作原理如果所讨论的类
已经覆盖了它的equals()
,以测试该类
的特定值,则这是正确的。由程序员决定equals()
比较什么。默认情况下,equals()
和=
是等效的;它们都检查内存引用是否相等。如果所讨论的类
已覆盖其equals()
以测试该类
的特定值,则这是正确的。由程序员决定equals()
比较什么。默认情况下,equals()
和=
是等效的;它们都检查内存引用是否相等。