2011-07-21 13 views
8

Este es mi problema:cómo utilizar onActivityResult (..) si la actividad se llama desde un menú

class main extends menuActivity{ 
    // 
    .. 
    // 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == 0) 
     camera_barcode = INTENT.getStringExtra("SCAN_RESULT"); 
    } 
    } 
} 

la intención se crea en la clase menuActivity:

public class menuActivity extends Activity { 

    public INTENT; 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

     // 
     INTENT = new Intent("com.google.zxing.client.android.SCAN"); 
     INTENT.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
     startActivityForResult(INTENT, 0); 
     // 
    } 
} 

El problema es que el String camera_barcode es nulo, no puede entender por qué.

Q: si en lugar de QR_CODE_MODE quiero escanear 1d códigos de barras? R: cameraScan.putExtra ("SCAN_MODE", "PRODUCT_MODE");

Gracias!

+0

Este enlace se le quede bien http://stackoverflow.com/questions/20114485/use-onactivityresult-android/39987477#39987477 –

Respuesta

17

Finalizar la actividad que está comenzando a resultado como este

Bundle b = new Bundle(); 
    b.putString(key, value); 
    Intent i = getIntent(); //gets the intent that called this intent 
    i.putExtras(b); 
    setResult(Activity.RESULT_OK, i); 
    finish(); 
+0

Normalmente uso la actividad constante.RESULT_OK en lugar de al azar 222. – sgarman

+2

Activity.RESULT_OK = -1: D Recuerda, dije que se llamará oAR() para cada entero positivo: D –

+0

Bien, buen truco. – sgarman

0

No importa dónde cree la intención. Si usó el método Activity startActivityForResult(), recibirá los resultados en la función onActivityResult().

+0

Hola, y gracias por la respuesta! Definí una intención pública en la clase MenuActivity, y ahora las cosas parecen funcionar. El único problema es que la intención de retorno ZXing es nulo:/ Este es mi código: pública onActivityResult vacío (int requestCode, int resultCode, los datos de intención) { si (requestCode == 0) { si (== resultCode RESULTADO_OK) { Cadena camera_barcode = cameraScan.getStringExtra ("SCAN_RESULT"); .... } Y la cadena camera_barcode es siempre nula –

+0

Puedo ver su código en la pregunta. ¿Entonces básicamente recibes el resultado, pero la intención es nula? Debe actualizar su pregunta con esta información. – inazaruk

Cuestiones relacionadas