Wie ich eine Tätigkeit mit der Absicht starten und eine Variable in der neuen Tätigkeit übergeben?
-
27-09-2019 - |
Frage
So jetzt bin ich mit dem ZXing Barcode-Scanner in meiner app. Es folgt ein Beispielcode (allgemein):
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
}
}
}
Also, wenn die BarcodeScanner.class
starten, möchte ich auch contents
hinein passieren. Wie würde ich mich über das zu tun?
Lösung
Verwenden Bundle innerhalb Absichten Daten von einer Aktivität zur passieren andere. In Ihrem Fall würde man so etwas zu tun hat -
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);
Die Information wird in ein ‚Bündel‘ Objekt gespeichert, dass Leben in der Intent - das Bundle erstellt, wenn Sie die putExtras () -Methode des Intent-Objekt aufrufen
Andere Tipps
Auf die gleiche Weise übergeben Sie "SCAN_MODE"
auf die andere Aktivität, durch putExtra("some key", contents)
Aufruf vor startActivity()
Aufruf und dann innerhalb Barcodescanner Aufruf this.getIntent().getStringExtra("some key")