Hallo Leute,
ich verwende die BarcodeScan-App von zxing um Barcodes in meiner App zu scannen. Das Scannen selber funktioniert auch und ich bekomme den Barcode zurück. Nun möchte ich, wenn ich den Barcode zurück bekomme direkt ein anderes Fragment anzeigen. Leider bekomme ich immer folgende Exception:
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
Mein Code sieht (etwas vereinfacht) so aus:
Java
public void StarteBarcodeScan(Activity pActivity){
try {
Intent localIntent = new Intent("com.google.zxing.client.android.SCAN");
localIntent.setPackage("com.google.zxing.client.android");
localIntent.putExtra("SAVE_HISTORY", false);
startActivityForResult(pActivity, localIntent, Constants.BARCODE_SCAN_REQUESTED, null);
} catch (Exception e) {
e.printStackTrace();
Logger.e(e, "BarcodeScanner-App nicht installiert?");
}
}
Alles anzeigen
Java
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == Constants.BARCODE_SCAN_REQUESTED) {
if (resultCode == RESULT_OK) {
String barcode = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
if (!barcode.isEmpty()){
try {
this.setCurrentFragment(BuchungAnzeigeFragment.class);
} catch (Exception e) {
e.printStackTrace();
}
}
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
Alles anzeigen
Java
// sets the current fragment
private Fragment setCurrentFragment(Class pClass)
{
this.stopAutoSync();
this.startAutoSync();
Fragment fragment = null;
Class fragmentClass = pClass;
try {
fragment = (Fragment) fragmentClass.newInstance();
this.setToolbar(fragment);
} catch (Exception e) {
e.printStackTrace();
}
// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flContent, fragment).addToBackStack(null).commit();
this._Drawer.closeDrawers();
return fragment;
}
Alles anzeigen
In Zeile 19 des letzten Codeblocks kommt die Exception.
Habt Ihr eine Idee was ich anders machen muss um den Fehler zu beheben?
Gruß hs1