Come lancio un'attività con un intento e passare una variabile nella nuova attività?
-
27-09-2019 - |
Domanda
Così adesso sto usando lo scanner di codici a barre ZXing nella mia app. Here è esempio di codice (generico):
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
}
}
}
Così, quando il lancio del BarcodeScanner.class
, voglio anche passare contents
in esso. Come potrei fare per fare questo?
Soluzione
Bundle all'interno intenti a passare i dati da un'attività altro. Nel tuo caso, si dovrà fare qualcosa di simile -
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);
Le informazioni sono memorizzate in un oggetto 'bundle' che vive dentro l'Intento - il bundle viene creato quando si chiama il metodo putExtras () dell'oggetto intenti
Altri suggerimenti
Lo stesso modo in cui si passò "SCAN_MODE"
per l'altra attività, chiamando putExtra("some key", contents)
prima di chiamare startActivity()
, e poi dentro BarcodeScanner chiamata this.getIntent().getStringExtra("some key")