为什么if-else部分在下面的代码中不起作用。我在success
之前检查了if
的值,它返回true
,但if
内的代码无效。
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
dialog.dismiss();
System.out.println(success);
if(success == "true")
{
Toast t = Toast.makeText(getApplicationContext(), "Successfully logged in", Toast.LENGTH_SHORT);
t.show();
Intent intent = new Intent(MainActivity.this, Quote_Details.class);
intent.putExtra("sessionId", sessionId);
startActivity(intent);
}
else if(success == "fals")
{
Toast f = Toast.makeText(getApplicationContext(), "LOGIN FAILED", Toast.LENGTH_LONG);
f.show();
}
}
答案 0 :(得分:5)
要比较字符串,请使用" .equals"。
E.g:
if (success.equals("true"))
编辑:哎呀,有人更快......好吧,至少你现在也有一个例子:)
答案 1 :(得分:3)
由于'success'是一个布尔变量(或者看起来如此),你必须像比较所有原始值一样进行比较。所以if(success){ }
或if(success == true){ }
。我想澄清以下内容 - if(success)
告诉if语句返回成功值,如果成功为真,则继续语句,如果为false则返回false /不继续语句。这是一种更好的方式,而不是if(success == true)
如果成功是String,那么if(success.equalsIgnoreCase("true")
这是因为String是一个对象而不是像int,boolean,char等原始数据类型。
您还可以在将来以相同的方式比较对象
答案 2 :(得分:2)
您应该使用equals
方法比较字符串,而不是==
运算符。运算符==只是比较对象引用,而不是对象的内容。
答案 3 :(得分:2)
当您处理String
时 - 对象使用equals()
进行比较:
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
dialog.dismiss();
System.out.println(success);
if(success.equals("true"))
{
Toast t = Toast.makeText(getApplicationContext(), "Successfully logged in", Toast.LENGTH_SHORT);
t.show();
Intent intent = new Intent(MainActivity.this, Quote_Details.class);
intent.putExtra("sessionId", sessionId);
startActivity(intent);
}
else if(success.equals("fals"))
{
Toast f = Toast.makeText(getApplicationContext(), "LOGIN FAILED", Toast.LENGTH_LONG);
f.show();
}
}