【问题标题】:ZXing barcode scanner fails within ActivityGroupZXing 条码扫描器在 ActivityGroup 内失败
【发布时间】:2011-08-04 16:19:52
【问题描述】:

我创建了一个小 tabActivity 应用程序,并且喜欢在不使用 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 毫秒内找到条形码
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):配置更改:{ scale=1.0 imsi=0/0 loc=en_US touch=3 keys=1/1/2 nav=1/1 orien=1 layout=34 uiMode=17 seq=72}

我认为它一定是 ActivityManager.. 一旦 zxing 结束,它返回显示按钮并且没有结果。

有什么建议吗?提前谢谢!!

【问题讨论】:

    标签: android tabactivity zxing activitygroup


    【解决方案1】:

    好的,我自己设法解决了这个问题。 对于所有对我的解决方案感兴趣的人,这里是:

    我没有启动对子活动“BarcodeActivity”的扫描,而是将其引用到父活动:

    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();
    

    但随后它击落了所有东西..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      相关资源
      最近更新 更多