2011-08-04 20 views
0

我創建了一個tabActivity應用程序,喜歡運行zxing並顯示結果而不用使用ActivityGroup更改選項卡。 沒有ActivityGroup的一切工作正常。ZXing條碼掃描儀在ActivityGroup內失敗

這裏是我的ScanActivity的一些代碼。如果我「使能」的的ActivityGroup我永遠不會碰上onActivityResult ...:

class ScanButtonClickListener implements OnClickListener { 
     @Override 
     public void onClick(View v) { 
      IntentIntegrator.initiateScan(BarcodeActivity.this); 
     } 
    } 

    public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
      IntentResult scanResult = 
       IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
      Log.v("barcode", scanResult.getContents().toString()); 
    } 

這裏有明顯的部分:

activity android:name=".barcode.BarcodeActivity" 
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
android:screenOrientation="portrait"> 
</activity>  
<activity android:name=".tabGroups.BarcodeTabGroupActivity"></activity> 

和TabGroupActivity,只啓動barcodeActivity爲現在:

public class BarcodeTabGroupActivity extends TabGroupActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     startChildActivity("BarcodeActivity", new Intent(this, BarcodeActivity.class)); 
    } 
} 

而且過濾日誌:

08-04 15:59:02.093:DEBUG/DecodeHandler(4477):在1 ms內發現條形碼
08-04 15:59:02.144:DEBUG/CaptureActivityHandler(4477):解碼成功消息
08-04 15:59:03.792:DEBUG/CaptureActivityHandler(4477):得到了返回掃描結果消息
android :: CameraHardwareSec :: stopPreview():預覽沒有運行,什麼都不做
08-04 15:59:03.941:INFO/WindowManager (109):將旋轉設置爲0,animFlags = 1
08-04 15:59:03.957:​​INFO/ActivityManager(109):Config changed:{scale = 1.0 imsi = 0/0 loc = en_US touch = 3鍵= 1/1/2 nav = 1/1 orien = 1 layout = 34 uiMode = 17 seq = 72}

我認爲它必須是活動管理器的東西..只要zxing結束,它將返回顯示按鈕,沒有結果。

任何提示?先謝謝了!!

回答

1

好吧,我設法自己解決這個問題。 大家誰是有興趣在我的解決方案,那就是:

而不是啓動掃描的子活動「BarcodeActivity」,我把它refered父活動:

class ScanButtonClickListener implements OnClickListener { 
    @Override 
    public void onClick(View v) { 
      //get the parent activity 
     TabGroupActivity parentActivity = (TabGroupActivity) getParent(); 
     IntentIntegrator.initiateScan(parentActivity); 
    } 
} 

而現在有可能父BarcodeTabGroupActivity內通過onActivityResult訪問結果:

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
    Log.v("barcode_tabgroup", scanResult.getContents().toString()); 
    } 

在這個onActivityResult現在我可以開始我的下一個childActivity來處理掃描結果......不知道這是很好的做法,卜它工作。

我想我必須完成使用

BarcodeActivity childActivity = (BarcodeActivity) getCurrentActivity(); 
childActivity.finish(); 

其他孩子的活動,但隨後擊落一切..