[Android] 화면에 되돌아오면서 setText가 먹지 않는 문제

blue·2021년 12월 15일
0

solved

목록 보기
2/2

프래그먼트 A -> B -> A로 돌아오면서 A의 EditText에 setText()를 호출하였으나 text가 적용되지 않는 것을 발견했습니다.

popBackStack으로 B에서 이전 프래그먼트 A로 돌아오면서 현재 UI Thread가 A로 바뀌지 않은 상태에서 setText를 해서 그렇다고 합니다.

해결 방법

  1. 새로 binding을 하거나, findViewById로 뷰를 다시 가져오는 방법
    • EditText를 찾지 못해서 발생한 것이기 때문에 누구인지 다시 명시해주는 것입니다.
  2. post로 딜레이를 줘서 setText를 설정
    • 딜레이를 주어서 이전 프래그먼트 A가 얼추 세팅된 후 setText를 호출하는 방식입니다.
  3. onStart() or onResume()에서 setText 호출
    • 이전 프래그먼트로 복귀할 때는 onCreate부터 플로우를 타는 것이 아니기 때문에 해당 메소드를 오버라이드하여 setText()를 호출합니다.

저의 경우 post로 setText를 설정하였더니, EditText에 빈 값으로 설정되었다가 키워드로 텍스트가 설정되는 모습이 고스란히 보여졌습니다. 또한, 이외의 방법도 저에게는 잘 적용되지 않았습니다.

그래서 B로 넘어가는 상황에서 먼저 EditText에 setText()를 하여, B -> A로 돌아왔을 때 따로 setText()를 해주지 않아도 EditText에 키워드가 남아있도록 하는 방식으로 문제를 해결하였습니다.

참고

profile
😎

0개의 댓글