Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

기어가는 피카츄

thyrlian/AwesomeValidation 라이브러리의 문제(?) 본문

아니드로이드

thyrlian/AwesomeValidation 라이브러리의 문제(?)

pikachu1259 2019. 11. 12. 12:58

<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)도 마찬가지로 안 됨

Comments