프로그램/안드로이드

안드로이드에서 view.getId() 가 -1 리턴

(주)CKBcorp., 2018. 11. 6. 06:00
반응형



디버그 코드 찍어봤을때의 황당함이 딱 이랬다.


결론부터 이야기하면, 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();


이런식으로 쓰면 됨. 그럼 너님은 내 디버깅 시간을 아낄 수 있다. 


반응형