Android читать значение штрих-кода из значения текстового поля

Я хочу сделать небольшое приложение, которое позволяет пользователю вводить номер штрих-кода в текстовое поле. Затем он может отсканировать штрих-код, и, если номер штрих-кода в текстовом поле совпадает с отсканированным штрих-кодом, отображается небольшое сообщение с надписью "совпало".

По какой-то причине введенный мною штрих-код не находит соответствия, хотя я и дал точный номер штрих-кода, который я сканирую. Что я делаю неправильно?

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    //retrieve scan result 
    IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);

    if (scanningResult != null) {
        String scanContent = scanningResult.getContents();
      //String scanFormat = scanningResult.getFormatName();
        contentTxt.setText(scanContent);
        doSomething();
    }
    else{ 
        Toast toast = Toast.makeText(getApplicationContext(), 
            "No scan data received!", Toast.LENGTH_SHORT); 
        toast.show(); 
    }
}
//Output a message if the barcode matches the code stated in 'scanContent'
public void doSomething(){
    if (codeNumber.getText() == contentTxt.getText()) {
        Toast toast = Toast.makeText(getApplicationContext(), "We have a match!", Toast.LENGTH_LONG);
        toast.show();
    }
    else {
        Toast toast = Toast.makeText(getApplicationContext(), "DOES NOT MATCH!", Toast.LENGTH_LONG);
        toast.show();
    }
}

1 ответ

Решение

Я предполагаю, что вы родом из мира C. Добро пожаловать, друг.

В Java не просто сравнивать два экземпляра String, поскольку String - это объект, а не примитивный тип.

Используя == операнд, вы сравниваете адреса обоих строковых объектов в памяти. Так как в вашем случае это не один и тот же объект, результат FALSE,

Чтобы сравнить значения, используйте String.equals ():

if (contentTxt.getText().toString().equals(codeNumber.getText().toString())) {
Другие вопросы по тегам