¿Cómo pongo en marcha una actividad con una intención y pasar una variable en la nueva actividad?
-
27-09-2019 - |
Pregunta
Así que ahora estoy usando el escáner de código de barras ZXing en mi aplicación. Aquí es ejemplo de código (genérico):
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
}
}
}
Así que cuando inicia la BarcodeScanner.class
, también quiero pasar contents
en ella. ¿Cómo voy a ir haciendo eso?
Solución
Uso Bundle dentro intentos para pasar datos de una actividad a la otro. En su caso, se tendría que hacer algo como -
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);
La información se almacena en un objeto 'paquete' que vive dentro de la Intención - el paquete se crea cuando se llama al método putExtras () del objeto Intención
Otros consejos
De la misma manera que pasó "SCAN_MODE"
a la otra actividad, llamando putExtra("some key", contents)
antes de llamar startActivity()
, y luego dentro de BarcodeScanner this.getIntent().getStringExtra("some key")
llamada