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