안드로이드 개발 질문/답변
(글 수 45,052)
실은 제가 Activity를 2개를 만들었습니다.
데이터 목록을 보여주는 Activity(A라고 하겠습니다)와..
목록을 클릭했을때 목록의 상세 내용을 보여주는 Activity(B라고 하겠습니다)인데요..
상세내용을 보여주는 B에서 삭제버튼을 클릭하면 현재 조회중인 내용을 DB에서 지운뒤 A 로 이동하고 B는 finish 메소드로 종료하게 됩니다.
근데 문제가 있는게..
A에서 어떤 검색어를 입력하여 나온 결과에서 목록을 클릭하여 B를 보고 있는 상황에서..
삭제버튼을 클릭하여 삭제작업을 진행한뒤 A 를 Intent를 이용하여 호출하게 되면..
기존의 검색했던 내용을 보여주는것이 아닌 최초의 A를 보여주게 됩니다..
물론 B에서 단순히 finish만 해줘도 B를 보기 전이었던 A가 보이긴 하지만..
그럴경우 A에 방금전에 B에서 삭제한 내용이 아직 목록에 보여지고 있어서..
이 부분땜에 Intent에 목록을 재검색하라는 내용의 파라미터를 보내서 다시 재조회를 하게끔 할려는 거거든요..
Intent가 아닌 다른 방법이어도 상관없습니다..
어떤 내용을 보면 이 부분을 해결해볼수 있을까요?




왜 굳이 A -> B -> A 임에도 B 에서 인텐트 호출로 A 를 하시는지 궁금하군요
startActivityForResult 로 B 를 호출한 다음 A 종료전 setResult 하셔서 A에서 onActivityResult로 불러 올수도 있을텐데...
해결책은 있습니다.
Intent i = new Intent(B.this, A.class);
startActivity(i);
--------------------------------
Intent i = new Intent(B.this, A.class);
i.addFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
플래그값을 제대로 썼는지는 모르겠네요
클리어탑과 싱글탑을 플래그로 추가해주시면 액티비티 스택상에 존재하는 것을 onResume 을 하며 호출합니다.
---------------------------
덧..액티비티 라이프사이클에 대해 충분한 이해가 되지 않았거나 사용을 제대로 하지 못하는 것 같은데
매우 중요한 부분이니 다시 한번 공부해보시기 바랍니다.