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)