0

アプリに検索機能があり、SearchPage2.java という検索アクティビティと、リスト アイテムをクリックすると詳細情報を表示する別のアクティビティ (SearchTaDa.java) があります。SearchTaDa.java からソフトウェアの [戻る] ボタン (またはハードウェアの [戻る] ボタン) を押したときに ListView を引き続き表示したいので、SearchPage2.java でfinish()呼び出すことができないことがわかりました。onPause()ただしfinish()、SearchPage2.java を呼び出していないため、ハードウェアのホーム ボタンを押してアプリを終了し、アプリを再起動すると、スプラッシュ スクリーンからアプリを再起動するのではなく、すぐに SearchPage2 アクティビティに戻ります。アプリ。したがって、SearchPage2 onPause は次のようになります。

    @Override
protected void onPause() {
    super.onPause();
    overridePendingTransition(R.anim.fadein, R.anim.fadeout);
}

More Info アクティビティの SearchTaDa.java onPause は次のようになります。

    @Override
protected void onPause() {
    super.onPause();
    overridePendingTransition(R.anim.fadein, R.anim.fadeout);
    finish();
}

私の質問は、SearchPage2 アクティビティで何を呼び出して、アプリを再起動したときにアプリが新たに開始され、検索ページで再開されないようにすることができるかということです。

4

1 に答える 1

0

グローバル フラグ「destroyOnResume」を設定し、フラグが設定されている場合は、finish onResumeを呼び出します。

詳細:

コードのどこかで、次に呼び出されたときに SearchPage2Activity を終了する必要があるかどうかを判断し、コードのどこかにあるフラグを調整します。たとえば、グローバル メンバーとして...

public static boolean destroySearchPage2OnResume = false;

または、 SharedPreferencesに入れて、アプリが強制終了された場合でもこれを保持します。

SearchPage2.java では、アプリがバックグラウンドに入ったときに onRestart() または onPause() の後に呼び出される onResumeMethod をオーバーライドします。フラグが true に設定されている場合は、SearchPage2 アクティビティをすぐに終了します。

@Override
protected void onResume () {
   super.onPause();
   if(destroySearchPage2OnResume){
   this.finish();
   }  
}

ちなみに、アクティビティをonPause で強制終了するのではなく、 no-history-flagで呼び出す方がクリーンです...

于 2012-10-19T17:00:02.683 に答える