2010-10-30 7 views
3

Donc maintenant j'utilise le scanner de codes à barres zxing dans mon application. Voici un exemple de code (générique):Comment lancer une activité avec une intention et passer une variable dans la nouvelle activité?

if(position == 0){ 
      Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
      intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
      startActivityForResult(intent, 0); 


     } 

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (requestCode == 0) { 
      if (resultCode == RESULT_OK) { 
       contents = intent.getStringExtra("SCAN_RESULT"); 
       format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
       // Handle successful scan 
       Intent i = new Intent(Main.this, BarcodeScanner.class); 
       startActivity(i); 
      } else if (resultCode == RESULT_CANCELED) { 
       // Handle cancel 
      } 
     } 
    } 

Ainsi lors du lancement du BarcodeScanner.class, je veux aussi passer contents en elle. Comment ferais-je cela?

Répondre

6

Utilisez Bundle dans les intentions de transmettre des données d'une activité à l'autre. Dans votre cas, vous devez faire quelque chose comme -

 Intent intent = new Intent(Main.this,BarcodeScanner.class); 

     //load the intent with a key "content" and assign it's value to content    
     intent.putExtra("content",contents); 

     //launch the BarcodeScanner activity and send the intent along with it 
     //note that content is passed in as well    
     startActivity(intent); 

Les informations sont stockées dans un objet « Bundle » qui vit dans l'intention - le Bundle est créé lorsque vous appelez la méthode putExtras() de l'intention objet

1

De la même façon que vous avez passé "SCAN_MODE" à l'autre activité, en appelant putExtra("some key", contents) avant d'appeler startActivity(), puis à l'intérieur Barcodescanner appel this.getIntent().getStringExtra("some key")

Questions connexes