1

我的应用程序使用条形码扫描仪。我想在打开应用程序时启动扫描仪,所以我在 onCreate 方法中有它。问题是,如果我有这样的设备,当我转动设备时,它会再次调用 onCreate 并调用另一个扫描仪。

我还有第一个调用扫描仪的活动。它有一个菜单,所以如果用户按回,它会转到该菜单。如果我打开该菜单上的屏幕,它会再次进入条形码扫描仪。

为了解决这个问题,我有一个标志,表明这是否是我第一次调用扫描仪,如果不是我不再调用它。现在的问题是,如果我退出应用程序并再次进入,它不会进入扫描仪,而是进入菜单,因为这不是我第一次调用它。

有任何想法吗?当我退出主要活动或任何其他解决方案时,有没有办法更改标志?我的代码。

private static boolean first = true;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    integrator = new IntentIntegrator(this);
    if (first) {
        first = false;
        integrator.initiateScan();
    }

}
4

2 回答 2

3

在您的应用程序 manifest.xml 中,将此添加到调用此条码扫描器的 Activity

android:configChanges="orientation"

像这样

<activity
android:name=".YourActivity"
android:configChanges="orientation"
android:label="@string/app_name" />

它的作用是,当设备旋转时,它将“什么也不做”,这意味着它不会再次调用活动(最终避免调用 onCreate())

于 2012-06-16T08:18:46.193 回答
1

您可以覆盖 onResume 方法并进行任何您想要的更改。

public void onResume(Bundle savedInstanceState) {
    super.onResume();
//reset the flag here as you wish
}
于 2012-06-16T08:19:53.993 回答