메인과리스트의 두 가지 활동이 있습니다.
Main에서 List를 열 수 있습니다. 목록에서 Main을 열 수 있습니다.
List를 열 때마다 '역사'에 저장 되지 않도록 하고 싶습니다 . 따라서 Main에서 뒤로를 누르면 List로 돌아갈 수 없습니다 .
가능할까요?
메인과리스트의 두 가지 활동이 있습니다.
Main에서 List를 열 수 있습니다. 목록에서 Main을 열 수 있습니다.
List를 열 때마다 '역사'에 저장 되지 않도록 하고 싶습니다 . 따라서 Main에서 뒤로를 누르면 List로 돌아갈 수 없습니다 .
가능할까요?
답변:
목록의을 시작할 때 다음 과 같이 플래그를 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
역사 스택에 추가되지.
NB : @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);
늦은 답변이지만 다른 답변에 깊이를 더합니다. 모든 것은 그 활동에서 시작된 다른 활동으로 무엇을하고 싶은지에 달려 있습니다.
옵션 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))
Intent(this, MainActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) }.also { startActivity(it) }
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(...)
. 이렇게하면 사용자가 'main'에서 BACK을 누르면 돌아갈 것이 없습니다.