일모도원(日暮途遠) 개발자

[Android] android:id="@+id"에서 +의 뜻 본문

안드로이드 개발/안드로이드

[Android] android:id="@+id"에서 +의 뜻

달님개발자 2022. 9. 8. 00:25

xml에서 UI의 ID를 주기위해서 android:id="@+id/button"이런씩으로 이름을 주는데 가끔 id앞에 "+"가 없이  android:id="@id/image" 이런씩으로 있는 경우가 있다.

 

id는 R.java에 자동으로 생기는데, "+"는 없으면 R.java에 해당 아이디를 만들고 있으면 그걸 쓰라는 뜻이다.

 

그럼 "+"없으면? 그건 있는걸 쓰라는 뜻이다. R.java에 없으면 새로 만들지 않고 에러를 낸다.

 

당연히 "@+id/"를 쓰자. 

 


XML파싱은 위에서 아래로 순차적으로 하기 때문에

만약 아래처럼 "+"가 위의 Button에 만 있고 Button안에서 참조하는 "@id/image"에 +가 없다면 에러가 난다.

 

<Button 
   android:id="@+id/button"
   android:layout_below="@id/image"/>    (여기서 image란 id를 찾지못해서 에러가 남)

<ImageView 
   android:id="@+id/image"/>

 

해결책은 ImageView태그를 먼저 선언하던지

<ImageView 
   android:id="@+id/image"/>
<Button 
   android:id="@+id/button"
   android:layout_below="@id/image"/>  (위에서 이미 image란 id를 선언했기에 에러가 안남)

 

Button안에서 참조하는 "@id/image"에 +를 추가하고 아래에 추가안하면 된다.

<Button 
   android:id="@+id/button"
   android:layout_below="@+id/image"/>  (여기서 +를 사용해서 image란 id가 없으면 만들게 함.)

<ImageView 
   android:id="@+id/image"/>

하지만 이렇게 복잡하게 하지 말고 그냥 "@+id"를 쓰자

참고

https://proandroiddev.com/android-resource-id-under-the-hood-45196d69f1e6