관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[안드로이드] 데이터바인딩 xml onclick 한글 파라미터 오류 해결 본문

안드로이드/코틀린 & 아키텍처 & Recent

[안드로이드] 데이터바인딩 xml onclick 한글 파라미터 오류 해결

막무가내막내 2020. 8. 29. 21:41
728x90

 

 

 

[2021-04-14 업데이트]

가장 하단에 새 해결방법을 참고해주세요 :)

 

 

 

데이터바인딩에서 3번째 사진과 같이 onClick 리스너로 뷰모델에 지역이름을 전달하려고했습니다.

하지만 빌드시 계속 kapt 에러가 났고 assemble로 나와도 에러메시지는 뜨지가 않았습니다. ㅠㅠ

계속 구글링을 해봤는데도 원인은 찾을수 없던 와중에 혹시 한글 String 은 못 넘기나? 해서 다음과 영어로 쓰니까 바로 해결되더라고요

그래서 영어로 바꿔서 해결해줬습니다

 

만약 다른 해결방법을 아시는분은 댓글 달아주시면 감사하겠습니다.

-> 답변이 달렸습니다. strings.xml 리소스를 이용하면 됩니당

 

[새 해결 방법]

답변하신대로 해서 해결했습니다. String Resource 파일(strings,xml) 에 문자를 저장하고 그것을 가져다가 쓰면 해결됩니다.

strings.xml

 <string name="num_unit_text">명</string>

데이터바인딩 쪽은

 android:text="@{reservation.num + @string/num_unit_text}"

이런식으로 하면 됩니다.

 

 

예시2)

 

뷰모델

fun goBoardList(board: String) {
        Log.d("AAAA", board.toString())
    }

 

xml

<TextView
                android:id="@+id/tv_free"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="@{()->vm.goBoardList(@string/free_board_text)}"
                android:paddingStart="@dimen/padding_32dp"
                android:paddingTop="@dimen/padding_12dp"
                android:paddingEnd="0dp"
                android:paddingBottom="@dimen/padding_12dp"
                android:text="@string/free_board_text"
                android:textColor="@color/colorBlack"
                android:textSize="@dimen/text_size_20sp"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <TextView
                android:id="@+id/tv_graduate"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="@{()->vm.goBoardList(@string/graduate_board_text)}"
                android:paddingStart="@dimen/padding_32dp"
                android:paddingTop="@dimen/padding_12dp"
                android:paddingEnd="0dp"
                android:paddingBottom="@dimen/padding_12dp"
                android:text="@string/graduate_board_text"
                android:textColor="@color/colorBlack"
                android:textSize="@dimen/text_size_20sp"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/tv_free" />

 

 

댓글과 공감은 큰 힘이 됩니다. 감사합니다 .!!

 

728x90
Comments