我创建了一个小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();
然后它把所有东西都击落了