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())) {