[일일이] trouble shooting 기록

두리두두·2024년 6월 17일
0

TIL

목록 보기
15/15
  • 사실 이게 트러블슈팅인가?싶지만 일단 몰랐어서 고민했고, 구글링을 하며 새로 알아간 것들 중 좀 의미있는 아하모먼트를 가졌던 것들을 기록해본다.

  • 캘린더 프래그먼트 들어가자마자 오늘 날짜 포커싱은 되는데 거기에 모든 리사이클러뷰가 뜨는 현상, 오늘날짜에만 뜨면 좋겠음.
    -> 파이어베이스 불러와서 뷰모델에 저장, 닷 찍는거 하려면 모든 정보 필요. 이거 하려고 전체 정보 불러오는데 이 때 마지막 단계에 어답터도 호출해버려서 리사이클러뷰 전체가 셋팅됨
    -> 마지막 단계에 어답터 호출 제거
    -> 오늘 날짜 클릭 표시 하고, onViewCreated에서 개별 날짜에 대해 리사이클러뷰 불러와주는거 셋팅. (fetchDiariesForSelectedDate(selectedDate!!))

  • fetchDiariesForSelectedDate(selectedDate!!) 이 메서드가 결국 두 번 호출되는거. 생성됐을 때 한 번, 머터리얼캘린더뷰에서 각 날짜 클릭할 때 한 번

 // 다른 날짜 클릭 시 일정 불러오기
        binding.calendarView.setOnDateChangedListener(object:OnDateSelectedListener{
         override fun onDateSelected(
                widget: MaterialCalendarView,
                date: CalendarDay,
                selected: Boolean
            ) {
                Log.d("CALENDER++", "setOnDateChanged${date.month}")
                if (date.month < 10){
                    selectedDate = "${date.year}-0${date.month}-${date.day}"
                }else{
                    selectedDate = "${date.year}-${date.month}-${date.day}"
                }
                Log.d("CALENDER++", "setOnDateChanged2$selectedDate")
                fetchDiariesForSelectedDate(selectedDate!!)
            }
        })
  • 초기화될 때 한 번 onViewCreated에서 날짜에 셋팅.
  • 날짜를 클릭했을 때 그 날짜에 해당하는 일기들을 불러온다.고만 생각했다. 그래서 처음에 진입하자마자는 클릭이 없는데 어케하누! 라고 며칠을 보내다가 군침이 싸악 돌면서 생각해보니 처음에 생기는 것도 리사이클러뷰고 클릭했을 때 생기는 것도 리사이클러뷰이니 초기화될 때 한 번 불러오면 되겠네! 하고 해결

  • 리스트에서 수정하려고 클릭하면 작성프래그먼트에 내용이 셋팅되어 불러와진다. 문제는 신규 작성을 하려고 작성을 클릭해도 이게 남아있던 것
  • 신규 클릭을 해도 프래그먼트는 교체되어도 그 프레그먼트 하나에서 쓰는 뷰모델은 동일하기 때무넹 그대로였던것.
  • onViewCreated에서 뷰모델이 가지고 있는 selectedDiary가 null인지에 따라 내용을 셋팅하냐 마냐로 했음.
  • 왜냐면 사고의 흐름이 첨부터 신규/수정 나눈게 아니라 ,,, 수정에서 클릭했을 때 내용을 그대로 보여주고싶다 -> list 프래그먼트에서 어답터 클릭 이벤트에서 뷰모델에 selectedDiary를 저장하면 write 프래그먼트에서 갖다쓸수있겠다 ㅎㅎ 였기 때문
  • 잘 생각해보니.. 뷰모델의 생명주기!!! 프래그먼트가 바뀌어도 얘는 남아있음. list->write 갈 때는 이걸 이용한건데 바로 write를 클릭할때는 미처 생각을 못했음. 그래서 write 클릭하는 액티비티에서 뷰모델 초기화를 해주니 해결-

  • 젤 큰문제 신규작성을 하면 앱이 강종됨;;

  • 글씨체, 글씨크기, 색상 -> 테마 스타일로 만들어서 따로관리ㅜ
profile
야금야금 앱 개발자

0개의 댓글