2

私は主な活動といくつかのアプリケーションを持っています。他の各アクティビティには、アプリケーションのロゴがあります。ユーザーがロゴ ボタンを押したら、メイン アクティビティに戻りたい。

アクティビティがアクティビティ スタックにあるため、新しいインテントを作成したくありません。

どうすれば取得できますか-スタック上のものを使用しますか? 前のアクティビティに戻るのではなく、戻るボタンが実際にアプリケーションを終了するように、アクティビティ スタック全体をクリアするにはどうすればよいですか?

ヨアヴ

4

3 に答える 3

4

アクティビティがアクティビティ スタックにあるため、新しいインテントを作成したくありません。

既に開始されていてスタックにあるアクティビティを (インテントまたはその他の方法で) 開始すると、Android はアクティビティの同じインスタンスを取得して、スタックの一番上に配置します。新しいインスタンスは作成されません。もちろん、これはアクティビティを手動で (呼び出して) 強制終了しなかった場合に発生しますfinish()

前のアクティビティに戻るのではなく、戻るボタンが実際にアプリケーションを終了するように、アクティビティ スタック全体をクリアするにはどうすればよいですか?

すべてのアクティビティで戻るボタンをオーバーライドしてアプリケーションを終了することはお勧めしません (アプリにそうする強い理由がない限り)。一般に、アプリは、ユーザーが戻るボタンを押したときに前のアクティビティに戻れるようにする必要があります (これはユーザーが期待することです)。
それでも戻るボタンで終了したい場合は、戻るボタン機能をオーバーライドして、ホーム画面につながるインテントを起動できます。

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
于 2012-05-26T10:26:22.757 に答える
0

私はやや似たような問題に直面しました。次のリンクが役立つ場合があります。

1回押すだけでアクティビティのスタックをクリア

于 2012-05-26T09:58:46.520 に答える
0

とてもシンプルです。Home/Main アクティビティで finish() を呼び出さないでください。例: 4 つのアクティビティがあるとします。要件が次のような場合は、.. Act1-->Act2-->Act3-->Act4-->Act1 です。したがって、Act1 で finish() を呼び出さないでください。ただし、他のアクティビティに移動している間に、Act2、Act3 で finish() を呼び出します。したがって、Act4 でロゴをクリックするときは、finish() を呼び出すだけです。したがって、自動的にメイン アクティビティである Act1 に戻ります。
Act2 にロゴがある場合、Act3 もロゴのクリック時に finish() を呼び出してメインに戻ります。ただし、Act2 から Act3 に移動している間は、Act2 で finish() を呼び出すことを忘れないでください。

于 2012-05-26T10:41:45.863 に答える