Androidアプリ開発で出てくるIDの+の意味について調べてみました。
<EditText android:id="@+id/editText" />
調べた所+を付けるのはIDを自動定義するためのようです。
+なしだと参照するだけなのですが、+ありだと新規定義&参照してくれます。
参考にしたのは下記事です。
android - @+id/とはなんですか? - スタック・オーバーフロー
実際にプラスを取るとエラーになります。
<EditText android:id="@id/editText" />
エラー内容は下のように「IDが見つからない」というものです。
error: resource id/editText (aka com.example.myapp:id/editText) not found.
IDが見つからないと言われたので試しに自分で定義してみました。
値は適当な数字を入れています。
<resources> <id name="editText">347284929378</id> </resources>
実行すると下のようなエラーになりました。
どうやらIDは空かリソースの参照にする必要があるようです。
<id> inner element must either be a resource reference or empty.
空にしたら無事に動かすことができました。
先程のレイアウト側で置きていた「IDがない」というエラーもおきなくなりました。
<resources> <id name="editText" /> </resources>
上記のようにidを定義した状態で+idを使ってもエラーにはならないようです。
<EditText android:id="@+id/editText" />
それと複数箇所でIDの定義をすると警告が出ます。
<EditText android:id="@+id/editText" /> <EditText android:id="@+id/editText" />
警告内容は下のとおりです。
Duplicate id @+id/cbDrink, already defined earlier in this layout
こちらですが片方の+を取れば警告が出なくなりました。
<EditText android:id="@+id/editText" /> <EditText android:id="@id/editText" />