2014-07-16 2 views
0

enter image description here 다이어그램에서 다른 활동을 시작할 때 이전 활동을 모두 닫으려고합니다. 나는 플래그로 많은 시도를했지만 작동하지 않는 것 같습니다. 예. 활동 AI가다른 사람을 시작할 때 발신자 활동 완료

Intent intent = new Intent(this, ActivityB.class); 
intent = intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
intent = intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

또는

Intent intent = new Intent(this, ActivityB.class); 
intent = intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
intent = intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

라고하지만 finish() 방법이 활동 A에 호출되지 않습니다에 활동 B를 시작할 때 나는, 글로벌 클래스를 가지고에 Activity를 확장 Navigation라고했습니다 한 클래스에서 이런 일을 처리하십시오. 모든 오렌지 액티비티는 내 내비게이션을 확장하며 파란색은 내 내비게이션을 확장합니다. BackButton 동작은 정상적으로 작동하는 것으로 보이지만 다른 작업을 시작할 때 finish() 메서드가 호출되지 않습니다. finish()을 명시 적으로 호출해야합니까? 어디에? onStop에서 앱을 다시 시작하면 활동 X로 돌아갈 수 없습니다.

답변

0

startActivity(intent); 

단순히 완료 할 활동에

finish(); 

을 넣어 후. 플래그는 ie가 필요한 경우에만 필요합니다. 당신은 활동 스택

+0

내 스택이 분명하다) (I 다른 활동을 시작할 때마다 마무리를 호출 할 때? – lis

+0

finish()는 호출 된 활동 만 완료합니다. 네가 얻었을 때. finish()를 호출 할 때보 다 활동 스택에 3 개 항목이 있습니다. 2 개 항목이 있습니다. 다른 항목은 제거되지 않습니다. 모든 아이템을 지우고 싶다면 : 'intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); ' –

+0

이 플래그를 사용하고 finsih를 호출해야합니까? 현재 스택을 표시하는 방법을 알고 있습니까? – lis

0

을 취소하려는 당신은 같은 코드에서 마무리()을 추가 바로하고 있습니다 :

Intent intent = new Intent(this, ActivityB.class); 
intent = intent = intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
finish(); 
관련 문제