반응형

버그 발생

위로해주세요, 위로해줄게요 카테고리에서 게시글을 자세히 보거나 글을 작성하게 될 때 새로운 액티비티(프레그먼트)로 이동하고, 자세히 보기를 완료한 후, 글을 작성한 후 다시 원래 액티비티(프레그먼트)로 돌아오게 된다. 

 처음엔 몰랐는데 테스트 하는도중 확인해보니 글을 자세히 보거나, 글을 작성한 후 다시 돌아오는 과정에서 무조건 내가 쓴 글만 보이게 되는 문제가 생겼다. 심지어 전체 글 보기, 내가 쓴 글 보기 탭 레이아웃은 그대로 있고  말이다.

이처럼 게시글을 삭제하고 나오니 위의 탭에서는 전체 글 보기로 되어있지만 사실 내가 쓴 글만 불러오도록 작동 중이었다.

 처음에는 당황하고 액티비티, 프레그먼트 간의 데이터 이동 등 과정을 정리하고 있었다. 액티비티와 프레그먼트 전환 간 인텐트와 번들로 데이터를 주고받아 설정을 해줘야 하나, 그러면 엄청 복잡해질 것 같은데... 이런 생각을 하며 고민을 하고 있었다.

 그러다 갑자기 번뜩 '생명주기'라는 단어가 생각났다. 굉장히 중요하고 어려운 개념이라고 들었다. 대충 기억하기로 뭐 화면이 사라질 때, 다른 화면이 보였다가 다시 보였을 때, 처음 생성될 때 등등... 재빨리 공식 사이트를 들어가서 생명주기 개념을 조금 보았는데 내가 원하던 부분을 찾은 것 같았다. 

onResume()

활동이 재개됨 상태에 들어가면 포그라운드에 표시되고 시스템이 onResume() 콜백을 호출합니다. 이 상태에 들어갔을 때 앱이 사용자와 상호작용합니다. 어떤 이벤트가 발생하여 앱에서 포커스가 떠날 때까지 앱이 이 상태에 머무릅니다. 예를 들어 전화가 오거나, 사용자가 다른 활동으로 이동하거나, 기기 화면이 꺼지는 이벤트가 이에 해당합니다.

 

위의 내용은 공식문서에 있는 onResume()의 설명 부분 중 일부이다.

생명주기의 관한 공식문서는 여기를 통해 볼 수 있다.

위의 내용을 보고 onResume()에서 조금만 손보면 해결될 것이라는 생각이 들었다.

문제 해결

프레그먼트에 아래와 같이 소스코드를 작성하였다.

override fun onResume() {
        super.onResume()
        // 게시글 자세히 보기하고 돌아왔을 때
        // 선택되어있는 탭 레이아웃에 따라 다른뷰를 보여줌
        when(binding.tabLayout.selectedTabPosition){
            // 전체글 보기
            0 -> getAllData()
            1 -> getOnlyMineData()
        }
    }

tabLayout에 눌려져 있는 버튼에 따라, 전체 글 보기가 눌려있을 경우(0) 전체 글을 보여주고 내가 쓴 글 보기가 눌려있을 경우(1) 내가 쓴 글만 보여주도록 구현하였다.

위와 같이 정상 동작한다. ㅎㅎ

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기