2

我想在我的应用程序中集成 zxing 二维码扫描仪,我的应用程序中有三个选项卡。

目前,当我的一个标签栏按钮被按下时,我正在调用 zxing qr 代码的扫描活动,但是当它调用它时,它会显示如下错误。

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.beepz/com.google.zxing.client.android.CaptureActivity}: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'

相反,我的代码同时具有选项卡主机控件,并且我在我的活动调用中实例化了选项卡主机,如下所示。

XML 文件 (Capture.xml):

<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android1="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <SurfaceView
        android:id="@+id/preview_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerInParent="true" >

        <TabHost
            android:id="@android:id/tabhost"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >

                <TabWidget
                    android:id="@android:id/tabs"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" >
                </TabWidget>

                <FrameLayout
                    android:id="@android:id/tabcontent"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >

                    <LinearLayout
                        android:id="@+id/tab1"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" >
                    </LinearLayout>

                    <LinearLayout
                        android:id="@+id/tab2"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" >
                    </LinearLayout>

                    <LinearLayout
                        android:id="@+id/tab3"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" >
                    </LinearLayout>
                </FrameLayout>
            </LinearLayout>
        </TabHost>

      <com.google.zxing.client.android.ViewfinderView
            android:id="@+id/viewfinder_view"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@color/transparent" />
    
    </SurfaceView>
</FrameLayout>

</merge>

Java 文件:(CaptureActivity.java)

public final class CaptureActivity extends TabActivity implements
    SurfaceHolder.Callback {

private TabHost tabHost;

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    window.setFormat(PixelFormat.TRANSLUCENT);
    
    setContentView(R.layout.capture);

    tabHost = getTabHost();
    Intent intent = new Intent().setClass(this, first.class);      
    TabSpec spec = tabHost.newTabSpec("First Tab").setIndicator("First Tab",getResources().getDrawable(R.drawable.iconinfo)).setContent(intent); 
    tabHost.addTab(spec);
    .
    .
    .

}

我是否需要更改清单文件中的任何内容或我需要做的其他任何事情?

4

1 回答 1

1

最后我解决了我的问题;问题是我的主项目中有一个 CaptureActivity.java 文件。通过在主项目的 CaptureActivity.java 文件中添加 TabHost 解决了问题。

于 2013-06-10T05:15:52.947 回答