Saltar al contenido

zxing onActivityResult no llamado en Fragmento solo en Actividad

Este grupo de redactores ha pasado mucho tiempo buscando soluciones a tus dudas, te brindamos la respuestas así que nuestro deseo es que te resulte de mucha apoyo.

Solución:

Como Martynnw señaló que el tema es llamar fragment.startActivityForResult en vez de activity.startActivityForResult. Así que solo usa el siguiente envoltorio:

import android.content.Intent;
import android.support.v4.app.Fragment;

import com.google.zxing.integration.android.IntentIntegrator;

public final class FragmentIntentIntegrator extends IntentIntegrator 

    private final Fragment fragment;

    public FragmentIntentIntegrator(Fragment fragment) 
        super(fragment.getActivity());
        this.fragment = fragment;
    

    @Override
    protected void startActivityForResult(Intent intent, int code) 
        fragment.startActivityForResult(intent, code);
    

integrator.initiateScan();

Cambie la línea anterior como

integrator.forSupportFragment(fragment_name.this).initiateScan();

Alternativa ZXing Android integradoimplementación:

import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);

    new IntentIntegrator(this).initiateScan(); // `this` is the current Activity


Uso de un Fragmento:

IntentIntegrator.forFragment(this).initiateScan(); // `this` is the current Fragment

// If you're using the support library, use: 
// IntentIntegrator.forSupportFragment(this) instead.

Obtenga los resultados:

@Override
public void onActivityResult(int requestCode, int resultCode,Intent data) 
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if(result != null) 
        if(result.getContents() == null) 
            Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
         else 
        Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
    
     else 
        super.onActivityResult(requestCode, resultCode, data);
    

más info y opciones

Te mostramos reseñas y valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *