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

Application manifest.xml で、このバーコード スキャナーが呼び出されるアクティビティにこれを追加します。

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 に答える