更改设备方向时如何停止再次调用活动?

时间:2012-06-16 08:09:35

标签: android android-intent

我的应用使用条形码扫描仪。我想在打开应用程序时启动扫描程序,因此我在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();
    }

}

2 个答案:

答案 0 :(得分:3)

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

android:configChanges="orientation"
像这样

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

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

答案 1 :(得分:1)

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

public void onResume(Bundle savedInstanceState) {
    super.onResume();
//reset the flag here as you wish
}