2

ユーザーがバーコード番号をテキスト ボックスに入力できる小さなアプリケーションを作成したいと考えています。次に、バーコードをスキャンし、テキスト ボックスのバーコード番号がスキャンしたバーコードと一致すると、「一致しました」という小さなメッセージが表示されます。

スキャンしている正確なバーコード番号を指定したにもかかわらず、何らかの理由で、入力したバーコードが一致しません。私は何を間違っていますか?

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

1 に答える 1

2

私の推測では、あなたは C の世界から来たのでしょう。

Java では、String はプリミティブ型ではなくオブジェクトであるため、単純に 2 つの String インスタンスを比較することはありません。

オペランドを使用すること==で、メモリ内の両方の文字列オブジェクトのアドレスを比較しています。あなたの場合、それらは同じオブジェクトではないため、結果はFALSE.

値を比較するには、String.equals()を使用します。

if (contentTxt.getText().toString().equals(codeNumber.getText().toString())) {
于 2013-10-15T09:19:58.880 に答える