안드로이드 개발 질문/답변
(글 수 45,052)
액티비티 종료에 대해 좀 찾아봤는데
restart는 완전히 처음부터 시작
인데 A->B->C->D->E 액티비티까지 차례로 들어갔다가 E에서 특정버튼을 누르면 바로 E D C 다꺼지고 B나 B까지 꺼지고 A가 뜨게 하는 방법이 있나요?

마비노기영웅전 프리미어서버 뉴키
-
다음에 직장을 구할 때는 퇴근을 도망이라고 부르지 않는 직업이 좋을 것 같다.
-
2011.03.08 17:08:46
각각의 파일에서 A.java파일 public static Activity activity; activity=this;이런식으로 한다음 B.java파일에서 B end=(B)B.activity; end.finish();이렇게하면 B에서 A액티비티를 종료시킬수있습니다 이런식으로 다연결하면 종료시킬수 있을거같습니다.
2011.03.08 17:50:22
단순 종료를 위한 거라면....
E 에서 A를 호출할때 CLEAR_TOP 플래그를 추가하여 호출하면 엑티비티 스택에서 E D C B 가 다 사라지고
A가 호출 되서 A 에서 finish를 하게되면 어플 밖으로 나가게 됩니당....
플래그 셋팅은 startActivity(intent) 하기 전에
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
위와같이 하면 되구요...
A가 아닌 B로 가고 싶다면 위와 같이 클리어_탑 플래그를 주고 B를 호출하면 B가 스택의 상단에 오게되고
그 밑에 A가 오게 됩니다 A가 바닥이죠... 고로 B에서 finish를 하면 A가 나오고 또 finish를 하게되면 어플 종료가 됩니다...
이외에도 플래그의 종류는 많습니다. 엑티비티 이동에 많은 도움을 주죠....
매 엑티비티마다 startActivityForResult로 실행해서 onActivityResult 에서 종료 처리를 해주려면 엑티비티의 갯수 만큼
일일이 다 구현해줘야 하므로 상당히 불편하고 엑티비티 트리의 가지수가 많을 수록 오류를 일으킬 확률이 높아져서 좋지 않은
방법입니다..
2011.03.09 09:28:12
A.java
onCreate{
...
Intent intent = new Intent(ctx, B.class);
startActivityForResult(intent, 0);
...
}
public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
switch(requestCode)
{
case 0:
if(resultCode == RESULT_OK)
{
intent = getIntent();//반복할때
setResult(RESULT_OK,intent);//반복할때
finish();
}
}
}
B.java
Intent intent = getIntent();
setResult(RESULT_OK,intent);
finish();
이걸 반복해서 썼는데 장승제님 말처럼 각 액티비티에 일일이 다 구현해줘야 해서 불편합니다. 장승제님 방법도 써봐야겠네요.




각 엑티비티를 스타트 시킬데 StartActivity 말고 StartActivityResult를 통해서 구현하면 앞에꺼꺼지면 자신도 종료 그자신이 종료되면 그전꺼 도 종료 이런식으로 처리하면 가능합니다~~~