Android でレイアウトを作成するとき、XMLファイルで
<TextView android:id="@+id/hoge" />
のように指定をしますが、android:id="@[+]id/hoge"
と指定するプラス記号に意味があるのかどうか気になったので調べてみました。
ID 指定でプラス記号[+]があると新規リソースIDが作成され R.java に追加される
Android の公式ガイドに回答が載っていました。
Value for android:id
For the ID value, you should usually use this syntax form: . "@+id/name".
The plus symbol, +, indicates that this is a new resource ID and the aapt tool will create a new resource integer in the R.java class, if it doesn't already exist.
超意訳すると、
android:id は "@+id/name" のように指定してね。
このプラス記号[+]は、新規リソースIDを作成することを表していて、プラス記号付きのIDがもし R.java クラスにない場合は、aapt ツールが R.java クラスに新規リソースを作成するよ。
とのことです。
他にも、StackOverflow で、
"@+id/add_button" : for add new id
"@id/add_button" : to refer existing id
you should use "@id/add_button" only when "add_button" is already added
to R.java class using "@+id/add_button"( what is the difference betwenn @id/ and @+id/ in android? - Stack Overflow )
のような回答もありました。
プラス記号付きIDは追加、プラス記号無しIDは参照とのことです。
なので、通常はレイアウトの android:id の値にはプラス記号[+]付きIDを指定するのが良いみたいです。