Comment je lance une activité avec une intention et passer une variable dans la nouvelle activité?
-
27-09-2019 - |
Question
Donc maintenant j'utilise le lecteur de codes barres ZXing dans mon application. Voici un exemple de code (générique):
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
}
}
}
lors du lancement du BarcodeScanner.class
, je veux aussi passer contents
en elle. Comment dois-je procéder?
La solution
Bundle intérieur pour intention de transmettre des données d'une activité à la 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 « paquet » objet qui vit dans l'intention - le Bundle est créé lorsque vous appelez la méthode putExtras () de l'objet Intent
Autres conseils
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 this.getIntent().getStringExtra("some key")
d'appel Barcodescanner