我想制作一个小应用程序,让用户在文本框中输入条形码。然后他可以扫描条形码,如果文本框中的条形码编号与扫描的条形码匹配,则显示一条小信息,说“匹配”。
由于某种原因,我输入的条形码找不到匹配,即使我已经提供了我正在扫描的确切条形码编号。我做错了什么?
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();
}
}
答案 0 :(得分:2)
我的猜测是你来自C世界。欢迎朋友。
在Java中,人们不会简单地比较两个String实例,因为String是一个对象,而不是一个基本类型。
通过使用==
操作数,您可以比较两个字符串对象'在记忆中的地址。由于在您的情况下它们不是同一个对象,因此结果为FALSE
。
要比较值,请使用String.equals():
if (contentTxt.getText().toString().equals(codeNumber.getText().toString())) {