2012-03-19 18 views
5

ZXing 2.0 kütüphanesi aracılığıyla bir QR-Code taraması gerçekleştirdiyse bir Fragment başlatırken bazı sorunlarım var. Bu durumda neden merakZXing 2.0 QR-Code Taramasından Sonra Parçanın Başlatılması

@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"); 
      } 
     } 
    } 

I'am: ben bu kodu çalıştırdığınızda

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* 

:

bu özel durum var. ActivityResult'un sonunda bir Fragman-İşlem başlatılamıyor mu? Yardımınız için önceden

.

cevap

2

Bu, temel olarak onSaveInstanceState'dan sonra çağrılan etkinliğiniz duraklatıldığı için olur: "Bu eylem," OnSaveInstanceState "sonra gerçekleştirilemiyor. Eğer çalışmak için bir şeyiniz varsa requestCode, resultCode ve niyetini saklayın ve onResume'a bakın.

7

onActivityResult'un onResume'dan daha önce çağrılması ve onResume adlı etkinliğe sahip olan en geçmeden önce yeni fragmanlar ekleyemezsiniz. Bu nedenle, onActivityResult adresindeki verilerinizi saklamanız, bunu onResume numaralı telefondan kontrol etmeniz ve Fragment değişikliklerinizi orada gerçekleştirmeniz gerekmektedir.

İlgili konular