メインとリストの2つのアクティビティがあります。
メインからリストを開くことができます。リストからメインを開くことができます。
リストのすべてのオープニングが「履歴」に保存されないようにしたいと思います。そのため、メインから押し戻すとリストに戻ることはできません。
出来ますか?
メインとリストの2つのアクティビティがあります。
メインからリストを開くことができます。リストからメインを開くことができます。
リストのすべてのオープニングが「履歴」に保存されないようにしたいと思います。そのため、メインから押し戻すとリストに戻ることはできません。
出来ますか?
リストを開始するときは、次のようにフラグ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);
代わりに使用できます。機能的な違いはありません。
マニフェストファイルに以下を追加します。
android:noHistory="true"
スタックに残したくないアクティビティに。
クリアして新しいタスクを使用します。私の場合、他のオプションが機能しなかったときに、これは機能しました。
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
別のアクティビティを開いた直後にアクティビティでfinish()を呼び出すと、終了したアクティビティがスタックから削除されるようです。
例えば:
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();
私の特定のケースでFLAG_ACTIVITY_NO_HISTORY
はうまくいきませんでした。どちらもFLAG_ACTIVITY_NEW_TASK
、またはFLAG_ACTIVITY_CLEAR_TASK
単独で機能しませんでした。
しかしFLAG_ACTIVITY_NEW_TASK
、FLAG_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);
遅い答えですが、他の答えにいくらかの深みを加えます。それはすべて、その活動から始まった他の活動で何をしたいのかということになります
オプション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);
それが他の答えを明らかにすることを願っています:)
Kotlinでこれを行う方法を追加したかっただけです。
val i = Intent(this, LogInActivity::class.java)
startActivity(i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK))
アクティビティがすでに実行されている場合は、FLAG_ACTIVITY_CLEAR_TOPを試してください。
Intent intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
フラグFLAG_ACTIVITY_NEW_TASK
を追加しますIntent
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
ケース: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();
以前のアクティビティがオフになっているので、お使いの携帯電話の速度がそれほど速くない場合は、デバイスがほとんどオフになっている日がこれを処理することを願っています
特定のアクティビティの戻るボタンをオーバーライドして、「戻る」機能を停止することはできませんか?
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}