0

我有 2 种不同的布局

一个是 TabHost,它托管不同的选项卡,其中一个是 QR 扫描仪选项卡。如果我单击按钮,它会启动扫描应用程序并对其进行扫描并将其返回到活动并显示结果(我使用 StartActivityForResult()... 启动它)。另一个 Layout 是 ListView,您可以在其中选择功能。如果您在此处选择 QR 扫描仪,则会打开活动。如果您单击扫描 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" />

这是 ListActivity -> 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 码...

4

2 回答 2

1

第一:你必须从ListActivitywith开始活动,startActivityForResult但你从 开始startActivity

第二:您还必须onActivityResult在 ListActivity 中实现。

于 2012-08-09T14:35:32.457 回答
0

哇,好的,我自己可以修复它...问题出在AndroidManifest.xml...android:launchMode那里android:configChanges我猜是错误的...删除它后,它在两种布局中都可以正常工作...

于 2012-08-10T07:58:47.770 回答