Nastics
Nastics

Reputation: 1

ZXing SCAN_RESULT if statements

this is my first question on stack*overflow*!

I am using Eclipse with Android Development Tools. I have copied the code from GitHub - ZXing to scan a QR code using Barcode Scanner (many of you have seen this code before, I'm sure):

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);
}

I am able to get the Barcode Scanner started and it returns results in the onActivityResult() method.

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();
            }
        }
    }

However, the else statement is always executed...unless I explicitly equate contents to 1. Below is a link to the screenshot (I don't have embedded image privileges yet) of the else body being executed and the toast clearly indicates that contents=1. What have I done wrong? Did I miss something?

Thanks everybody.

Upvotes: 0

Views: 310

Answers (1)

Jorgesys
Jorgesys

Reputation: 126523

Welcome to stackoverflow!

I have seen this is a very common issue in new Java programmmers :), for String comparison we must use the equals() method.

Change your code to:

 // Handle successful scan
                if(contents.equals("1")){
                    contentsLat = contents;
                }
                else if(contents.equals("0")){
                    contentsRow = contents;
                }

More info:

Java comparison with == of two strings is false?

The equals() Method

Upvotes: 1

Related Questions