这是我关于堆栈*溢出*的第一个问题!
我将Eclipse与Android开发工具一起使用。我已经复制了GitHub - ZXing中的代码以使用Barcode Scanner扫描QR码(我敢肯定,您中的许多人以前都看过此代码):
public void onClick(View v)
{
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent,0);
}
我能够启动条形码扫描仪,并且它在
onActivityResult()
方法中返回结果。public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
if (requestCode == 0)
{
if (resultCode == RESULT_OK)
{
contents = intent.getStringExtra("SCAN_RESULT");
format = intent.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan
if(contents == "1")
{
contentsLat = contents;
}
else if(contents == "0")
{
contentsRow = contents;
}
else
{
Toast.makeText(getApplicationContext(), "Code Not Recognized\n"+contents+"\n1", Toast.LENGTH_LONG).show();
}
}
else if (resultCode == RESULT_CANCELED)
{
// Handle cancel
Toast.makeText(getApplicationContext(), "Unsuccessful Scan", Toast.LENGTH_SHORT).show();
}
}
}
但是,总是执行
else
语句...除非我明确将contents
等同于1
。下面是正在执行的else
主体的屏幕快照(我还没有嵌入式图像特权)的链接,并且祝酒词清楚地表明了contents=1
。我做错了什么?我错过了什么?谢谢大家。
最佳答案
欢迎使用stackoverflow!
我已经看到这是新Java程序员中非常普遍的问题:),对于String比较,我们必须使用equals()
方法。
将您的代码更改为:
// Handle successful scan
if(contents.equals("1")){
contentsLat = contents;
}
else if(contents.equals("0")){
contentsRow = contents;
}
更多信息:
Java comparison with == of two strings is false?
The equals() Method