Запуск фрагмента после сканирования QR-кода ZXing 2.0

У меня возникли проблемы при запуске фрагмента, если я выполнил сканирование QR-кода через библиотеку ZXing 2.0.

Я получил это исключение:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has extras) }} to activity {fraiss.yucrowd/fraiss.yucrowd.activities.ScanQrCode}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState* 

Когда я выполняю этот код:

 @Override public void onCreate(Bundle bundle) { // TODO Auto-generated method stub super.onCreate(bundle); setContentView(R.layout.scan_qr_code); 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) { String contents = intent.getStringExtra("SCAN_RESULT"); String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); // Handle successful scan Log.d("MENU", "Scan result: " + contents + " as " + format); // Load details for qr code FragmentTransaction fragmentTransaction = getSupportFragmentManager() .beginTransaction(); Fragment fragmentDetails = new FragmentDetails( contents); fragmentTransaction .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); fragmentTransaction.replace(R.id.fragment_main, fragmentDetails); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } else if (resultCode == RESULT_CANCELED) { // Handle cancel Log.d("MENU", "Scan canceled"); } } } 

Я задаюсь вопросом, почему это происходит. Невозможно запустить Fragment-Transaction в конце ActivityResult?

Thx за вашу помощь заранее.

Возможно, для onActivityResult будет вызываться до onResume и вы не можете добавлять новые фрагменты до того, как Activity по крайней мере onResume .

Поэтому вам нужно сохранить данные, которые вы получили в onActivityResult , проверьте это в onResume и выполните изменения Fragment там.

Это происходит потому, что ваша активность приостановлена, а onActivityResult после onSaveInstanceState , поэтому сообщение: «Невозможно выполнить это действие после onSaveInstanceState». Сохраните requestCode, resultCode и намерение и проверьте onResume если вам есть с чем работать.