2013-01-11 1 views
1

내 응용 프로그램에서 다섯 개 활동을, Act1-> Act2-> Act3-> Act4-> Act5,안드로이드에서 이전 활동을 호출하는 방법? 내가 위에서 언급 한대로

모든 활동이 하나의 방향으로 간다, 는 지금은 후 다시 ACT2를 호출해야 내 Act5의 작업을 성공적으로 완료 했으므로 작업을 잘 보여주고 Act2를 보여주었습니다 (Act2에서 Act5에서을 사용했습니다), Act2에서 뒤로 버튼을 클릭하면 Act1이 생겼습니다 (startActivity(callIntent) 내가 Act1을 다시 보여주기위한 Act2에서) 내가 원하는 것 ..... 하지만 문제는 Act1의 뒤로 버튼을 클릭하면 Act2에 놓이게된다는 것이다. 하지만 Act1이 첫 번째 초기 활동이기 때문에 거기에서 나가고 싶습니다.

어떻게 의도를 작성하고 startActivity를 호출하는 대신 숨겨진 활동에 포커스를 설정할 수 있습니까?

아이디어가 있으십니까? 도와주세요.

답변

0

오랜 연구 끝에 앱의 모든 활동에 대해 '백 스택'에 대해 거의 이해했습니다.

다른 활동으로 이동하고 이전 활동을 열 때마다 과 함께 Intent.startActivity()을 사용 했으므로 새로운 활동이 추가 될 때마다 "백 스택"에 추가됩니다.

FLAG_ACTIVITY_CLEAR_TOP으로 "back-stack"에서 이전 활동을 호출하는 동안 Intent.startActivity()을 사용하여 의도 된 플래그를 시도했지만 이전 활동을 다시 호출하는 솔루션이 있으며 호출중인 활동 상위 스택 활동을 모두 지 웁니다. 그래서 지금 버튼은 내가 원했던 것처럼 훌륭하게 작동합니다.

이전 활동을 호출 내 문제를 보자, A = activity; A1->A2->A3->A4->A5->B2을, 지금 당신은 당신이 A1 활동을하고있는 것이며, A1의 뒤로 버튼을 클릭 한 후 A5 후 등등 불렸다 다시 B2 활동이 다시 버튼을 클릭합니다.

A5 활동에서 FLAG_ACTIVITY_CLEAR_TOP을 사용한 후 A2 (새 활동을 만들지는 않았지만 소중한 것을 불러내 지 않음)를 다시 호출하면 다음과 같은 상황이 발생합니다.

A = activity; A1->A2->A3->A4->A5 

이전 A2 활동 호출 및 다음 시나리오가 있습니다. A1->A2 만 해당.

감사합니다. 대신 (Intent.FLAG_ACTIVITY_NEW_TASK 플래그) 코드를 다음의

0

:

Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
callIntent.setClass(CurrentActivity.this,PreviousActivity.class); 
startActivity(callIntent); 

한 다음 사용해보십시오 Intent.FLAG_ACTIVITY_CLEAR_TOP

Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
callIntent.setClass(CurrentActivity.this,PreviousActivity.class); 
startActivity(callIntent); 
관련 문제