在zxing上创建方法调用两次

2 tabs android zxing android-tabhost

我是android的新手.我在一个应用程序中实现了一个Tab.我在其中使用了Tab Host.在其中一个标签中,我实施了Zxing扫描条形码.

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
getParent().startActivityForResult(intent, 0);
Run Code Online (Sandbox Code Playgroud)


现在,当扫描完成时,我已经覆盖了我的TabGroupActivity中的活动结果.

@Override

public void onActivityResult(int requestCode,int resultCode, Intent data)
 {

  super.onActivityResult(requestCode, resultCode, data);

}
Run Code Online (Sandbox Code Playgroud)


现在的问题是扫描完成后我的Tab Activity会再次调用两次.

无论onCreate()onResume()标签活动的方法和它的孩子叫twice.I不希望它调用两次.

感谢帮助

首先编辑
清单文件

<activity
            android:name="com.google.zxing.client.android.CaptureActivity"
            android:configChanges="orientation|keyboardHidden"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
            android:windowSoftInputMode="stateAlwaysHidden" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
             <intent-filter>
                 <action android:name="com.google.zxing.client.android.SCAN" />

                <category android:name="android.intent.category.DEFAULT" /> 
            </intent-filter> 
        </activity>

        <receiver android:name=".TimeAlarm" />

        <activity
            android:name=".TabsWithFragmentsActivity"
            android:theme="@android:style/Theme.Light.NoTitleBar" 
            android:screenOrientation="portrait">
        </activity>
Run Code Online (Sandbox Code Playgroud)

还有一件事我只是注意到我的应用程序表现不同.在版本大于4.0的平板电脑上,它可以完美地工作.但是对于Android平板电脑版本3.0,它的工作原理如上所述.如果有人可以提供帮助,我不确定Zxing需要哪个版本?

Viv*_*wal 8

onCreate方法可以调用两次.

在android中,当运行其他应用程序时可用内存较少.它可能会杀死您的应用,即使您的应用启动了另一个应用.方向更改时甚至会调用它(如果没有为该活动提供android:configChanges ="orientation | keyboardHidden | screenSize")

在您的情况下,您正在启动外部应用程序(Zxing),这可能需要比可用内存更多的内存.结果,您的应用程序被终止,但保存了与保存实例的活动堆栈).

所以当用户回到你的应用程序时.Android Framework使用相同的状态和活动再次运行您的应用程序,这将导致调用onCreate方法(即再次创建活动).

查找是否重新创建或第一次运行.你可以检查savedInstanceState是否为null.如果它为null则它第一次运行.

也可能是因为方向的改变,尝试为清单中的活动添加android:configChanges ="orientation | keyboardHidden | screenSize".