ZXing条码扫描器在活动组内失败



我创建了一个小tabActivity应用程序,并希望运行zxing并显示结果,而无需使用ActivityGroup更改选项卡。没有ActivityGroup,一切正常。

这里是my 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): Found barcode in 1 ms
08-04 15:59:02.144: DEBUG/CaptureActivityHandler(4477): Got decode succeeded message
08-04 15:59:03.792: DEBUG/CaptureActivityHandler(4477): Got return scan result message
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 keys=1/1/2 nav=1/1 orien=1 layout=34uiMode = 17 seq = 72}

我想一定是ActivityManager出了问题。一旦zxing结束,它返回显示按钮,但没有结果。

提示吗?提前感谢!!

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

不是在子活动"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();

然后它把所有东西都击落了

相关内容

  • 没有找到相关文章

最新更新