2011-08-04 22 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(); 

其他孩子的活动,但随后击落一切..