98

メインとリストの2つのアクティビティがあります。

メインからリストを開くことができます。リストからメインを開くことができます。

リストのすべてのオープニングが「履歴」に保存されないようにしたいと思います。そのため、メインから押し戻すとリストに戻ることはできません。

出来ますか?

4

11 に答える 11

169

リストを開始するときは、次のようにフラグActivityを設定します。Intent

Intent i = new Intent(...); // Your list's Intent
i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY); // Adds the FLAG_ACTIVITY_NO_HISTORY flag
startActivity(i);

FLAG_ACTIVITY_NO_HISTORYフラグは、新しいものActivityが履歴スタックに追加されないようにします。

注意:@Samが指摘しているように、i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);代わりに使用できます。機能的な違いはありません。

于 2012-09-10T19:56:55.500 に答える
98

マニフェストファイルに以下を追加します。

android:noHistory="true" 

スタックに残したくないアクティビティに。

于 2012-09-10T20:00:25.683 に答える
29

クリアして新しいタスクを使用します。私の場合、他のオプションが機能しなかったときに、これは機能しました。

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

履歴スタック全体をクリアして、Androidで新しいアクティビティを開始します

于 2014-06-18T19:22:55.777 に答える
26

別のアクティビティを開いた直後にアクティビティでfinish()を呼び出すと、終了したアクティビティがスタックから削除されるようです。

例えば:

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();
于 2013-09-25T15:05:51.567 に答える
11

私の特定のケースでFLAG_ACTIVITY_NO_HISTORYはうまくいきませんでした。どちらもFLAG_ACTIVITY_NEW_TASK、またはFLAG_ACTIVITY_CLEAR_TASK単独で機能しませんでした。

しかしFLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TASK一緒に仕事をしました。

Intent intent = new Intent(FooActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
于 2015-10-28T17:46:04.383 に答える
5

遅い答えですが、他の答えにいくらかの深みを加えます。それはすべて、その活動から始まった他の活動で何をしたいのかということになります

オプション1-この1つのアクティビティだけに、アクティビティの呼び出しの履歴を含めることはできません

次に、次のようにします。

Intent i = new Intent(...);
i.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);

オプション2-その特定のアクティビティから開始されたすべてのアクティビティに履歴を含めることはできません

次に、呼び出しアクティビティのマニフェストを追加します。

android:noHistory="true" 

ただし、新しいアクティビティの履歴が必要な場合は、フラグを手動で削除する必要があります。

Intent i = new Intent(...);
i.removeFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);

それが他の答えを明らかにすることを願っています:)

于 2018-07-04T10:28:15.500 に答える
4

Kotlinでこれを行う方法を追加したかっただけです。

val i = Intent(this, LogInActivity::class.java)
startActivity(i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK))
于 2018-02-08T22:50:29.750 に答える
2

アクティビティがすでに実行されている場合は、FLAG_ACTIVITY_CLEAR_TOPを試してください。

Intent intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
于 2018-08-07T19:23:39.010 に答える
1

フラグFLAG_ACTIVITY_NEW_TASKを追加しますIntent

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK

于 2012-09-10T19:57:22.193 に答える
0

ケース:1

このフラグを使用する

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

この場合、アクティビティの移行は、startactvityに進む前にスムーズに機能する空白の白いページではありません

cas 2:

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();

以前のアクティビティがオフになっているので、お使いの携帯電話の速度がそれほど速くない場合は、デバイスがほとんどオフになっている日がこれを処理することを願っています

于 2021-10-16T14:52:47.100 に答える
-5

特定のアクティビティの戻るボタンをオーバーライドして、「戻る」機能を停止することはできませんか?

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {

        return true;
    }
    return super.onKeyDown(keyCode, event);
}
于 2012-09-10T19:53:41.007 に答える