2012-09-24 2 views
4

나는 6 가지 활동을 수행하는 응용 프로그램에서 마법사를 사용합니다.동시에 여러 Android 활동을 "파괴하는 방법"

은 그래서 전화 :

주요 활동 - 옵션 1 전화 - 통화 옵션 2 - 옵션 3 전화 - 통화 옵션 4 - 통화 옵션 5

자, 옵션 5에 내가 수행 전체 작업을 데이터베이스에 저장하고 그 시점에서 주 활동으로 돌아가 Option1,2,3,4,5를 폐기해야합니다.

옵션 5가 데이터베이스에 저장 될 때까지 이동 가능해야합니다. 뒤로, 변경, Optio로 이동 n 5 그리고 그것을 저장하십시오. 주요 활동을

private void cleanStack(){ 
    Option1.finish(); 
    Option2.finish(); 
    Option3.finish(); 
    Option4.finish(); 
    Option5.finish(); 
} 

을 그리고 시작 (또는 다시 시작) :

어떻게 든 것이다 방법을 만드는 것이 그것을 할 적절한 방법을인가?

TNX

+1

왜 이것을 여러 활동으로 구현 했습니까? 필자에게 마법사는 ViewFlipper 또는 조각 트랜잭션을 사용하여 마법사의 여러 단계를 구현하는 단일 활동입니다. 참조하십시오 : http://stackoverflow.com/a/4758715/115145 – CommonsWare

+1

왜냐하면 나는 멍청하니 파편을 알아내는 데 3 일을 소비 했으므로 죽은 줄이 짧아서 실제로 제품을 배포하기로 결정했습니다. 최선의 관행과는 거리가 멀지 만 이것이 현실적이지 않은 마감 시간과 함께하는 방식입니다. – Balkyto

답변

3

은 내가 할 것이 오히려 모든 활동을 마무리보다, 당신의 MainActivity에 다시 전화하는 의도를 만들 수있다.

이 의도에 FLAG_ACTIVITY_CLEAR_TOP을 부여하려면 setFlags 메서드를 사용하십시오.

MainActivity의 인스턴스가 이미 존재하는지 확인하고, 실행하면 MainActivity를 다시 시작하고 그 위에 MainActivity를 배치하는 대신 해당 Activity를 앞에 놓고 그 위에있는 모든 활동을 지 웁니다. 스택.

MainActivity에서 옵션 1-5의 정보가 필요한 경우 데이터를 새로 고침해야 할 수도 있습니다. CLEAR_TOP은 대부분의 경우 MainActivity의 이전 인스턴스를 완전히 다시 만들지 않고 포커스로 만듭니다 (onCreate, onStartonResume).

여기에 Intent 클래스에 documentation이 있습니다. 걸릴 경우 탐색에 도움이되는 다른 플래그가 있습니다. 행운을 빕니다!

6

를 사용하여 스택을 취소하려면 다음 스택에 당신이 있기 때문에, 이러한 방식으로

Intent intent = new Intent (this , MainActivity.class); 
intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity (intent); 

을 : 주요 활동 -> 통화 옵션 1 -> 통화 옵션 2 -> 통화 옵션 3 -> 통화 옵션 4 - 당신이 명확 상단 플래그를 사용하여 MainActivity를 시작하면> 통화 옵션 5

가의 MainActivity의 상단에 스택의 모든 활동이 완료됩니다.

+0

Tnx! 이것은 마술을한다 :) – Balkyto