0

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

这是我的 ScanActivity 的一些代码。如果我“启用”活动组,我将永远不会遇到 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 布局=34 uiMode=17 序列=72}

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

有小费吗?提前致谢!!

4

1 回答 1

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

但随后它击落了一切..

于 2011-08-09T23:21:36.030 回答