7

複数のページを持ち、あるページから別のページへのナビゲーションが重要なフローを表すアプリケーションを作成しました。ユーザーが最初に警告せずに戻るボタンを押してアクティビティをエスケープし、最後にすべてのスタック トレースを削除して、アクティビティが再度起動されたときに新たに開始されるようにしたくありません。

まだ私は以下の機能に似たものを使用しています:

    @Override
    public void onBackPressed() 
    {
        this.finish(); 
        Intent int1= new Intent(this, Home.class);
        int1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(int1);
        super.onBackPressed();
    }

ただし、アプリケーションを終了した後に再度起動すると、ランダムなページまたはアプリケーションを終了した場所から再起動することがあります (基本的に、開始が予想されるホーム画面ではありません)。

コードで説明されているように、以前のアクティビティ フラグをすべてクリアする以外に、アプリケーションを終了するクリーンな方法は考えられません。上記のヘルプをいただければ幸いです。

編集 :

ユーザーが戻るボタンを押した場合、アクティビティのフロー中にいつでも、コントロールをメイン ページにスローして戻します (以前のアクティビティ スタック トレースをすべてクリアします)。誰かがアプリケーションを再起動した場合に、メイン ページから正常に再起動するようにします。

4

4 に答える 4

1

ユーザーが戻るボタンを押した場合、アクティビティのフロー中にいつでも、コントロールをメイン ページにスローして戻します (以前のアクティビティ スタック トレースをすべてクリアします)。

これは、MainActivity を除くすべてのアクティビティを進行中に終了するだけで実行できます。

誰かがアプリケーションを再起動した場合に、メイン ページから正常に再起動するようにします。

ユーザーがActivity_5にいて、ホームボタンを使用してアプリを再起動した場合、MainActivityが表示される必要がありますか?

その場合、 MainActivity を除くすべてのアクティビティをfinish()呼び出すことができますonPause()

編集:

完璧な解決策ではないかもしれませんが、これはまったく同じことを達成するために行ったことです(アプリケーションでログアウト):

OnBackPressed()すべてのアクティビティの更新では、 MainActivityを除くすべてのアクティビティに対してbackPressedと言うboolean 共有設定があり、その値をチェックして終了する場合は終了します。trueonResume()true

@Override
protected void onResume() {
    super.onResume();

    SharedPreferences mSP = getSharedPreferences(
            "your_preferences", 0);
    if (mSP .getBoolean("backPressed", false)) {
        finish();
    }
}
于 2013-05-27T09:33:58.220 に答える
0

戻るボタンは、前のアクティビティに戻るために使用されます。したがって、戻るボタンをオーバーライドしてアクティビティ スタックをクリアすることはありません。この目的にはアクション バーを使用することをお勧めします。アプリケーション アイコンを使用して、アプリケーションのホーム画面に移動します。

http://developer.android.com/guide/topics/ui/actionbar.html

このリンクとウォーレンフェイスによる回答の下のコメントも確認してください

Android - onBackPressed() が機能しない

于 2013-05-27T08:56:31.790 に答える
0
@Override
public void onBackPressed() 
{
    moveTaskToBack(true);
    android.os.Process.killProcess(android.os.Process.myPid());
    System.exit(1);
}

あなたはそのコードを使うことができます、それは私にとってはうまくいきます!

于 2020-07-16T02:15:55.723 に答える