メインとリストの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);
代わりに使用できます。機能的な違いはありません。
Intent
「Activity
原点に戻らない場合にのみ履歴に追加する」というフラグはありません。
マニフェストファイルに以下を追加します。
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))
Intent(this, MainActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) }.also { startActivity(it) }
遅い答えですが、他の答えに深みを加えます。それはすべて、その活動から始まった他の活動で何をしたいのかによって決まります
オプション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
特定のアクティビティの戻るボタンをオーバーライドして「戻る」機能を停止することはできませんか?
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
Activity
できません。
OnBackPressed
ためにあります。
finish()
直後に呼び出しますstartActivity(...)
。そうすれば、ユーザーが「メイン」から「戻る」を押すと、戻る必要がなくなります。