【发布时间】:2012-08-09 13:56:07
【问题描述】:
我有 2 种不同的布局
一个是 TabHost,它托管不同的选项卡,其中一个是 QR 扫描仪选项卡。如果我单击按钮,它会启动扫描应用程序并对其进行扫描并将其返回到活动并显示结果(我使用 StartActivityForResult()... 启动它)。 另一个 Layout 是 ListView,您可以在其中选择功能。如果您在此处选择 QR 扫描仪,则会打开活动。如果你点击扫描二维码,它会再次启动 ZXing,但如果有东西被扫描,它会退回到 Listview 布局。
这是我的活动在清单中声明的方式(ListView 布局):
<activity
android:name=".ListActivities"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name" >
</activity>
还有 TabHost:
<activity
android:name=".TabHoster"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name" >
</activity>
这是 ScanQR 类的 Manifest 条目:
<activity
android:name=".QRScanner"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:launchMode="singleInstance" />
这是来自 ListActivities 的代码 -> ScanQR:
Intent intent = new Intent(this, ScanQR.class);
startActivity(intent);
这是启动 ZXing 库的代码:
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
startActivityForResult(intent, 0);
以及从中返回结果的代码:
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
txtPleaseScan.setVisibility(View.GONE);
ScrollView qrLayout = (ScrollView) findViewById(R.id.qrLayout);
qrLayout.setVisibility(View.VISIBLE);
txtQRResult.setText(contents);
} else if (resultCode == RESULT_CANCELED) {
}
顺便说一句,我对两种布局都使用相同的 ScanQR 码...
【问题讨论】:
-
您说 Zxing 是在标签中工作的。我有一个疑问,您应该在哪里声明 onActivityResult() 方法。它在 tabgroupactivity 还是 subactivity 中?请帮助我
-
在启动另一个 Activity 的 TabGroup 中,因为这是在 Subactivity 关闭后调用的方法...
标签: android android-listview android-tabhost zxing