安卓中@idと@+idの違いと実際の応用における@idエラー問題
2288 ワード
Androidでは、R.javaファイルの存在により、各種コントロール設定のidが一意になります.@+idは何をしているのかわかるように、コントロールにidを設定してR.javaに追加します.では,@+id/を2回以上使用すると,idはR.javaでfinalの定数として定義されているため,2つは生成されない.2回目以降は役に立たない.すなわち@+id/の正確にはこのidを召喚する.このidが存在しない場合は、それを作成します.既に存在する場合は、それを召喚するだけです.
@id/idはidのみを呼び出し、idは作成されません.
実際にプロシージャを使用すると、@id/のエラーが発生します.
この行のエラー:android:layout_above=”@id/tv_test2”
なぜなら@id/はidを呼び出すだけで、idは作成されないからです.
viewはxmlで定義され、アンドロイドはxmlファイルを解析しなければidなどの対応するビューと関連定数を生成できません.Androidは上から下へ順に解析したり、順番にビューを作成したりします.最初のTextViewは最初にロードが完了し、2番目のTextViewはまだロードされていません.@id/tv_test 2はもちろんidを召喚できない.idはまだ生成されていないからだ.@idも話せない.
変更先:android:layout_above=”@+id/tv_test 2」アンドロイドはR.javaファイルにidを追加し、順調に通過します.一方、2番目のTextViewはidで再び「@+id/tv_test 2」を使用しており、繰り返し作成されません.
まとめは,@id/の使用が比較的厳しい,主にviewのxmlコードが誰が先に書いたのか,誰が後に書いたのかという問題であり,前に書いたviewは,@id/召喚で後ろに書いたviewを使用できない.
すると、@id/の書き方を使用すると、viewとviewのxmコードブロックの順序を変えることができない可能性があります(移動の原因はコードを習慣化し、読みやすくするためです).そうしないと、その場でエラーを報告しなくても、プロジェクトを整理したり、デバッグしたりするときにエラーが発生する可能性があります.
レイアウトでは、ビューを上に、下に、左に、右に、などのプロパティを設定するためによく使用されます.@+id/を使用すると、この悩みはありません.
そのため、個人的には@+id/の方が使いやすいと思います.
@id/idはidのみを呼び出し、idは作成されません.
実際にプロシージャを使用すると、@id/のエラーが発生します.
<TextView
android:id="@+id/tv_test1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/tv_test2"
android:text="bookmarkCount"
android:textSize="12sp"
/>
<TextView
android:id="@+id/tv_test2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="absolute"
android:textSize="12sp"
/>
この行のエラー:android:layout_above=”@id/tv_test2”
なぜなら@id/はidを呼び出すだけで、idは作成されないからです.
viewはxmlで定義され、アンドロイドはxmlファイルを解析しなければidなどの対応するビューと関連定数を生成できません.Androidは上から下へ順に解析したり、順番にビューを作成したりします.最初のTextViewは最初にロードが完了し、2番目のTextViewはまだロードされていません.@id/tv_test 2はもちろんidを召喚できない.idはまだ生成されていないからだ.@idも話せない.
変更先:android:layout_above=”@+id/tv_test 2」アンドロイドはR.javaファイルにidを追加し、順調に通過します.一方、2番目のTextViewはidで再び「@+id/tv_test 2」を使用しており、繰り返し作成されません.
まとめは,@id/の使用が比較的厳しい,主にviewのxmlコードが誰が先に書いたのか,誰が後に書いたのかという問題であり,前に書いたviewは,@id/召喚で後ろに書いたviewを使用できない.
すると、@id/の書き方を使用すると、viewとviewのxmコードブロックの順序を変えることができない可能性があります(移動の原因はコードを習慣化し、読みやすくするためです).そうしないと、その場でエラーを報告しなくても、プロジェクトを整理したり、デバッグしたりするときにエラーが発生する可能性があります.
レイアウトでは、ビューを上に、下に、左に、右に、などのプロパティを設定するためによく使用されます.@+id/を使用すると、この悩みはありません.
そのため、個人的には@+id/の方が使いやすいと思います.