这是我关于堆栈*溢出*的第一个问题!

我将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

10-07 19:47
查看更多