2017-01-12 2 views
-2

Ich mache eine App, wo der Code einen Barcode scannen und den Inhalt überprüfen wird und wenn der Inhalt mit der if else-Anweisung übereinstimmt, wird der Preis angezeigt. Wie löse ich dieses Problem?verschachtelt, wenn Else-Anweisung übersprungen wird und nichts tut

Hier ist der Code:

public class barcode extends AppCompatActivity { 
    Button scan_btn; 
    EditText Edit_current; 
    TextView formatTxt, contentTxt,price; 
    int x; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(activity_promotion_page); 
     formatTxt = (TextView) findViewById(R.id.scanFormat); 
     contentTxt = (TextView) findViewById(scanContent); 
     price = (TextView)findViewById(R.id.Price); 
     scan_btn = (Button) findViewById(R.id.scan_button); 
     final Activity activity = this; 
     scan_btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       IntentIntegrator integrator = new IntentIntegrator(activity); 
       integrator.setDesiredBarcodeFormats(IntentIntegrator.PRODUCT_CODE_TYPES); 
       integrator.setPrompt("Scan"); 
       integrator.setCameraId(0); 
       integrator.setBeepEnabled(false); 
       integrator.setBarcodeImageEnabled(false); 
       integrator.initiateScan(); 

      } 
     }); 

    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 

      if(result.getContents() == null) { 
       Log.d("MainActivity", "Cancelled scan"); 
       Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); 
      } else if (result.getContents().equals(12345014)){ 

      price.setText("$999"); 
      }else if (result.getContents().equals(12345021)){ 

       price.setText("$91"); 

      } 


     }} 
+0

Sie möchten über ** switch ** Statements lesen; und wie man sie zB mit Strings benutzt. – GhostCat

+0

Es wird übersprungen, weil keine der 3 angegebenen Bedingungen erfüllt ist. Also result.getContents() ist weder null, noch gleich 12345014 oder 12345021 –

+0

zuerst müssen Sie debuggen, was von getContents() Methode zurückgegeben wird –

Antwort

0

Mit der begrenzten verfügbaren Informationen, ich glaube, es ist, weil result.getContents(), nach dem Sie die Überprüfung nicht eine der Anweisungen entsprechen. Ich würde am Ende diese als abschließende Anweisung hinzufügen:

} else { 
    Log.d("MainActivity", "Failed to match. Contents are " + result.getContents()); 
} 

So zumindest kann man sehen, was result.getContents() enthält, und entsprechend handeln kann. Ihre aktuelle Lösung ist auch nicht sehr skalierbar - ich würde in die Verwendung von switch Anweisungen schauen oder SQLite verwenden, um eine Produktdatenbank abzufragen.

+0

hinzugefügt dies und obwohl ich scanne den Inhalt zeigt es nichts – Jason

+0

Das bedeutet, dass 'onActivityResult()' wird dann überhaupt nicht aufgerufen. Kannst du eine "Log" -Linie oben auf "onActivityResult()" anbringen, um das sicherzustellen? –