반응형
디버그 코드 찍어봤을때의 황당함이 딱 이랬다.
결론부터 이야기하면, view.getId() 함수는 R.java ( = 디자인을 통해 xml 에서 컴파일 단계에서 생성한 view ) 의 값에서만 뒤져서 가져온다.
즉, 프로그램 코드에서 동적으로 생성한 view 는, getId() 는 모두 -1을 반환한다. 왜냐구? 동적 생성이라 R.id 목록에 없거덩.
그럼 이걸 어떻게 해결해야 하느냐.
동적 생성한 view 에 대해, view.setId( 아이디값 ) 으로 값을 부여하는 방법이 있다. 물론, 아무 값이나 키로 부여하면 중복될 수 있으니까, view.generateViewId() 로 유일한 값을 가져와서 부여하면 된다. 즉,
int vID1 = -1;
view v1 = new View();
v1.setId( v1.generateViewId() );
vID1 = v1.getId();
이런식으로 쓰면 됨. 그럼 너님은 내 디버깅 시간을 아낄 수 있다.
반응형
'프로그램 > 안드로이드' 카테고리의 다른 글
안드로이드 view 동적 크기 변경. getLayoutParam() 안될때. (0) | 2018.11.04 |
---|---|
java - xml 파서에서 cdata 처리법. (0) | 2017.04.07 |
안드로이드 OS 별 API Level 목록. (0) | 2017.04.05 |
안드로이드 스튜디오에서 프로젝트 파일을 읽지 못 할 경우. (0) | 2017.04.02 |
앱이 background 상태일때, FCM Notification event handler 를 수신하지 못하는 경우. (6) | 2017.03.31 |