2017-02-02 2 views
0

J'ai n codes QR contenant le prix en entiers. Je veux scanner chaque code qr et ajouter son prix au montant total. Voici MainActivity.java par exemple. Si je scanne un code qr contenant le prix 40, 40 s'affiche dans TextView2. comment puis-je ajouter n qr codes et mettre à jour le total chaque fois que je scanne un qrcode?Comment numériser plusieurs codes QR et obtenir l'ajout?

package com.mycompany.smartshoppingcart; 

import android.net.Uri; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.ActivityNotFoundException; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

private static final int ACTIVITY_RESULT_QR_DRDROID = 0; 

TextView report; 
Button scan; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    report = (TextView) findViewById(R.id.textView2); 
    scan = (Button) findViewById(R.id.button1); 

    scan.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 

      Intent i = new Intent("la.droid.qr.scan"); 

      try { 

       startActivityForResult(i, ACTIVITY_RESULT_QR_DRDROID); 
      } 
      catch (ActivityNotFoundException activity) { 

       MainActivity.qrDroidRequired(MainActivity.this); 
      } 
     } 
    }); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 

    if(ACTIVITY_RESULT_QR_DRDROID == requestCode 
      && data != null && data.getExtras() != null) { 

     String result = data.getExtras().getString("la.droid.qr.result"); 



     report.setText(result); 
     report.setVisibility(View.VISIBLE); 
    } 
} 

/* 
* 
* If we don't have QRDroid Application in our Device, 
* It will call below method (qrDroidRequired) 
* 
*/ 

protected static void qrDroidRequired(final MainActivity activity) { 
    // TODO Auto-generated method stub 

    AlertDialog.Builder AlertBox = new AlertDialog.Builder(activity); 

    AlertBox.setMessage("QRDroid Missing"); 

    AlertBox.setPositiveButton("Direct Download", new OnClickListener() { 

     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 
      // TODO Auto-generated method stub 

      activity.startActivity(new Intent(Intent.ACTION_VIEW, 
        Uri.parse("http://droid.la/apk/qr/"))); 
     } 
    }); 

    AlertBox.setNeutralButton("From Market", new OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // TODO Auto-generated method stub 

      activity.startActivity(new Intent(Intent.ACTION_VIEW, 
        Uri.parse("http://market.android.com/details?id=la.droid.qr"))); 
     } 
    }); 

    AlertBox.setNegativeButton("Cancel", new OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // TODO Auto-generated method stub 

      dialog.cancel(); 
     } 
    }); 

    AlertBox.create().show(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 


    return true; 
} 

}

Répondre

0

Vous devez juste stocker cette valeur dans une variable globale pour la classe.

en haut de la classe ajouter int totalCost = 0; (ci-dessous Button scan; ligne)

Puis, en onActivityResult, une fois que vous obtenez le résultat retour de la QRCode vous devriez jeter cette variable à un nombre entier

via int cost = Integer.parseInt(result);

Une fois que vous avez la valeur entière du coût, il suffit de l'ajouter au coût total

totalCost += cost;

puis mettre à jour l'étiquette de texte

report.setText("" + totalCost);