メインとリストの2つのアクティビティがあります。
メインからリストを開くことができます。リストからメインを開くことができます。
Listを開くたびにnotが 'history'に保存されるようにします。だから、メインから押し戻すcannotリストに戻る。
出来ますか?
リストの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);
Kotlinでこれを行う方法を追加したかっただけです。
val i = Intent(this, LogInActivity::class.Java)
startActivity(i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK))
遅い答えですが、他の答えに深みを加えます。すべては、そのアクティビティから開始された他のアクティビティで何をしたいのかによって決まります
オプション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);
他の答えが明らかになることを願っています:)
フラグFLAG_ACTIVITY_NEW_TASK
をIntent
に追加します
http://developer.Android.com/reference/Android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
アクティビティが既に実行されている場合は、FLAG_ACTIVITY_CLEAR_TOPを試してください。
Intent intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);