기어가는 피카츄
thyrlian/AwesomeValidation 라이브러리의 문제(?) 본문
<include> </include> 태그로 동일 레이아웃을 중복적으로 여러개 사용하려고 할 경우
각 <include> 태그 안에 서로 다른 아이디를 부여함에도 불구하고
이 AwesomeValidation 라이브러리가 첫번째 TextInputLayout에만 적용이 돼서
무엇이 문제일까 고민하다가 로그를 찍어봄.
mValidator.addValidation(
getActivity(),
mBinding.cvRetail.tlPrice.getId(), RegexTemplate.NOT_EMPTY, R.string.input_text);
mValidator.addValidation(
getActivity(),
mBinding.cvWholesale.tlPrice.getId(), RegexTemplate.NOT_EMPTY, R.string.input_text);
addValidation메소드의 두번째 파라미터값이 .getId()를 불러와서 인 것 같다.
include 태그에서는 서로 다른 아이디를 부여해봐야 그 아이디가 참조한 layout depth의 id는 결국 같음
예를 들어서
Log.d(TAG, "setUpRules: " + mBinding.cvWholesale.tlPrice.getId() + " " + mBinding.cvRetail.tlPrice.getId());
를 찍어보면
D/DataCollectionFragment: setUpRules: 2131296769 2131296769
같은 레이아웃을 가져온 것이기 때문에 아이디도 같다...
(cvWholesale과 cvRetail은 동일한 layout에 대해 서로 다른 아이디를 부여한 것
tlPrice는 사용하고자 한 동일한 layout의 TextInputLayout)
결국 include 태그를 이용 못하고 cccv개발론에 의거한 복붙으로 처리하였음.
요지는 include 태그로 재사용하면 참조하는 id값이 모두 동일할 것이니
고유한 id값을 파라미터로 전달하기 위해서는 그냥 복붙을 하라
merge 태그로는 시도 안해봄
+) mBinding.cvWholesale.findViewById(R.id.tl_price)도 마찬가지로 안 됨
'아니드로이드' 카테고리의 다른 글
ADB 명령어를 이용하여 Terminal창에서 안드로이드 폰에 APK 파일 심기 (0) | 2019.12.14 |
---|---|
Swipe Refresh를 할 때 Toolbar가 펼쳐지지 않고 그대로 Swipe만 되는 현상 해결 (0) | 2019.12.14 |
Release용 앱 배포 시 Google Map SHA-1 key 등록 (지도 띄우는 법) (0) | 2019.12.12 |
EditText 커서 색 변경 (0) | 2019.11.15 |
Application Context(애플리케이션 컨텍스트)를 사용하는 이유 (0) | 2019.08.16 |