마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

액티비티 종료 후 이전 프래그먼트로 이동 시 갱신 방법

0 추천
맨땅에 헤딩중인 초보입니다..

생명주기에 대해 완벽히 이해를 못해서 설명을 제대로 드릴 수 있을지 모르겠는데

 

일단 메인 액티비티 위로 프래그먼트 3개와 그 안에 리사이클러뷰가 있고

다른 액티비티로 이동을 해서 입력 후 버튼을 눌러 저장을 하고 리사이클러뷰에 반영되는 그런 구조인데

 

문제는 버튼을 눌러 저장을 하면서 해당 액티비티는 finish()로 종료가 되면서

이전의 프래그먼트가 다시 보이게 되는데 그 프래그먼트 안의 리사이클러뷰에 저장된게 반영이 안됩니다.

 

DB 자체는 변경이 되어있는 상태라 3개의 프래그먼트 중

아무곳으로나 이동하고 돌아오면 갱신이 되기는 하는데...

 

다른 액티비티에서 돌아왔을 때 바로 갱신이 되는 방법이 분명 있을 것 같은데 가닥이 안잡힙니다...

 

저장을 하여 액티비티 종료가 되거나 Back 버튼을 입력해서 뒤로 돌아왔을때 무조건적으로

3개의 프래그먼트가 전부 새로고침 되면서 리사이클러뷰에 반영이 되든,

 

아니면 어떠한 방법이던 결과적으로 메인 액티비티에서 다른 액티비티로 이동을 하고

이동한 액티비티에서 데이터를 입력하고 저장하고나서 액티비티가 종료되고 나왔을때

화면 전환이나 그런것 없이 곧바로 갱신만 되었으면 하는데 무슨 방법이 있을까요..?
odroid7 (200 포인트) 님이 2021년 5월 19일 질문

1개의 답변

0 추천
 
채택된 답변
onResume 이 프레그먼트에서 호출되면 다시 읽어오면 됩니다.

첫실해요ㅣ에도 onResume이 호출되므로

통신 처리를 아예 onResume에서 하세요.
Will Kim (43,170 포인트) 님이 2021년 5월 19일 답변
odroid7님이 2021년 5월 28일 채택됨
답변 정말 감사합니다.

말씀해주신 다시 읽어오는게 프래그먼트인지 리사이클러뷰인지 잘 모르겠지만 미약한 지식으로는 리사이클러뷰라고 판단이 되는데 리사이클러뷰를 프래그먼트 클래스 안에 onResume 메소드를 하나 만들고 그 안에서 리사이클러뷰를 사용하란 뜻인지,

아니면 제가 잘못 짚은건지 알 수 있을까요..?
onResume은 액티비티나 프레그먼트의 라이프사이클 콜백함수예요. 해당 API문서를 보시면 명확하게 알 수 있습니다. API 문서를 자주 참조하세요.
답변 정말 감사합니다.

onRemuse에서 하라는게 프래그먼트의 onCreate{} 아래에

onRemuse{
 super.onRemuse();
}

해서 이안에다 리사이클러뷰를 구현하는건가 싶었는데..

일단 문서를 정독해보겠습니다!
Activity안에 Fragment가 3개가 있고 거기서 다른 Activity를 호출하고 돌아온다면,
현재 보이는 Fragment내의 onResume 이 실행이 될 겁니다.
그러면 Fragment가 처음 그려질 때 보여주는 함수를 onResume()안에서 실행하면 되죠.
아무 것도 안하면, 돌아왔을 때 아무 동작 안합니다.

참고로 프레그먼트가 있는 Activity의 onStart() onResume() onResumeFragments(), onWindowFocusChanged() 등의 이벤트도 발생합니다.

제 생각엔 Fragment의 onResume()에서 프레그먼트 내의 데이터를 리프레쉬하고, Activity에서도 처리할 부분이 있다면, 처리해야겠죠,

예시:

    @Override
    public void onResume() {
        super.onResume();

        DataRefreshFunction();

    }
말씀해주신대로 시도해봤는데 제가 뜻했던 대로 작동을 하네요...

체크박스 사용해서 북마크 기능 구현한 한곳만 다른 액티비티에서 체크를 풀고
돌아와도 반영이 안되긴 하는데.. 일단 다른 프래그먼트 두 곳은 정상적으로
즉시 반영이 되고 있습니다

큰 도움이 되었네요 정말 상세한 답변 감사합니다 ㅜㅜ...
...