Android에서 "@ id /"와 "@ + id /"의 차이점
@id/
과의 차이점은 무엇입니까@+id/
?
에 @+id/
더하기 기호 +
지시하는 새로운 자원 이름을 생성하고에 추가 R.java
파일하지만 약 @id/
? 문서에서 ID
: Android 리소스를 참조 할 때 ID
더하기 기호가 필요하지 않지만 다음과 같이 android 패키지 네임 스페이스를 추가해야합니다.
android:id="@android:id/list"
그러나 아래 이미지에서 Eclipse는 어떤 종류의 제안도하지 않습니다 @android:id/
.
인가
@id/
와@android:id/
같은?
당신은 참조 Android resources
로, 이미 안드로이드 시스템에 정의 된, @android:id/..
당신이 정의했다고 리소스에 액세스하는 동안 / 프로젝트에서 생성, 사용@id/..
더 많은 정보
채팅의 설명에 따라 다음과 같은 문제가 있다고 말했습니다.
우리가
android:id="@id/layout_item_id"
그것을 사용 하면 작동하지 않습니다. 대신@+id/
작동하므로 여기의 차이점은 무엇입니까? 그리고 그것은 내 원래의 질문이었습니다.
당신의 XML 속성을 사용할 때 글쎄, 그것은 상황에 따라 android:id
다음 새 ID를 지정하고, 파서 지시 (또는 빌더 호출)에 새 항목을 만들 수있다 R.java
, 따라서 당신이 가지고, 표시를 포함 +
하십시오.
와 같은 다른 경우 android:layout_below="@id/myTextView"
에는 이미 생성 된 ID를 참조하므로 파서는이를에서 이미 생성 된 ID에 연결 R.java
합니다.
더 많은 정보 다시
채팅에서 말했듯 이 사용중인 요소 다음에 작성된 요소 인 경우 android:layout_below="@id/myTextView"
id를 가진 요소를 인식하지 못합니다 myTextView
.
+ 부호는 ID를 자원 ID 목록에 추가하는 바로 가기입니다. 그렇지 않으면 다음과 같은 xml 파일에 있어야합니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="my_logo" type="id"/>
</resources>
때때로 레이아웃 파일에 다음과 같은 참조가 나타납니다.
<listview id="@+id/android:list">
과
<listview id="@android:id/list">
차이점이 뭐야?
.. ☺ 물어봐서 기쁘다
@+id/foo
응용 프로그램의 네임 스페이스에 foo라는 ID를 작성하고 있음을 의미합니다. 를 사용하여 참조 할 수 있습니다 @id/foo
. @android:id/foo
은 안드로이드 네임 스페이스에 정의 된 ID를 참조하고 있음을 의미합니다.
'+'는 심볼이 존재하지 않는 경우 심볼을 작성하는 것을 의미합니다. android : 기호를 참조 할 때 필요하지 않으며 사용하지 않아야합니다. 이는 기호가 플랫폼에 의해 이미 정의되어 있고 어쨌든 해당 네임 스페이스에서 자신을 만들 수 없기 때문입니다.
이 네임 스페이스는 프레임 워크의 네임 스페이스입니다. 예를 들어, @android:id/list
이것이 프레임 워크가 찾을 것으로 예상되는 ID이기 때문에 사용해야합니다 . (프레임 워크는 android 네임 스페이스의 ID에 대해서만 알고 있습니다.)
이 소스 에서 완전히 복사
한마디로
android:id="@+id/my_button"
+ id 더하기 부호는 Android에서 리소스에 새 ID를 추가하거나 만들도록 지시합니다.
동안
android:layout_below="@id/my_button"
이미 생성 된 ID를 참조하는 데 도움이됩니다 ..
+
자원 유형 앞 의 더하기 부호 ( )는 자원 ID를 처음 정의 할 때만 필요합니다. 앱을 컴파일 할 때 SDK 도구는 ID 이름을 사용하여 프로젝트R.java
파일에EditText
요소 를 나타내는 새 리소스 ID를 만듭니다 . 이 방법으로 리소스 ID를 한 번 선언하면 ID에 대한 다른 참조에는 더하기 부호가 필요하지 않습니다. 더하기 부호는 새 자원 ID를 지정할 때만 필요하며 문자열이나 레이아웃과 같은 구체적인 자원에는 필요하지 않습니다. 자원 객체에 대한 자세한 내용은 사이드 박스를 참조하십시오.
보낸 사람 : https://developer.android.com/training/basics/firstapp/building-ui.html
매우 간단합니다.
"@ + ..."-새로 만들기
"@ ..."-기존 링크
출처 : https://developer.android.com/guide/topics/resources/layout-resource.html#idvalue
로부터 개발자 가이드 :
android:id="@+id/my_button"
@
문자열 시작 부분의 at-symbol ( )은 XML 구문 분석기가 나머지 ID 문자열을 구문 분석 및 확장하여 ID 자원으로 식별해야 함을 나타냅니다. 더하기 기호 ( +
)는 R.java
파일 의 리소스에 작성하여 추가해야하는 새로운 리소스 이름임을 의미합니다 . Android 프레임 워크에서 제공하는 다른 ID 자원이 많이 있습니다. Android 리소스 ID를 참조 할 때는 플러스 기호가 필요하지 않지만 다음과 android
같이 패키지 네임 스페이스를 추가해야합니다 .
android:id="@android:id/empty"
Eclipse에 버그가있는 경우가 있습니다. 때로는 방금 new을 만든 경우 @+id/..
프로젝트를 새로 빌드 한 후에도 R.java 파일에 즉시 추가되지 않습니다. 해결책은 Eclipse를 다시 시작하는 것입니다.
이것은 가능한 한 빨리 해결되어야한다고 생각합니다. 경험에 따르면 일부 개발자는 구문에 문제가 있다고 생각하고 실제로 디버깅 할 것이 없다면 디버깅하려고 시도하기 때문에 혼란스럽게 할 수 있습니다.
Android는 XML 파일에 대한 값이 저장된 리소스라고하는 일부 파일을 사용합니다.
이제 XML 객체에 @ id /를 사용하면 값 파일에 이미 등록 된 id를 참조하려고합니다. 반면 @ + id /를 사용하면 '+'기호로 암시 된대로 값 파일에 새 ID를 등록합니다.
도움이 되었기를 바랍니다 :).
@id/
과 @android:id/
동일하지 않습니다.
@id/
애플리케이션에서 ID를 @android:id/
참조하고 Android 플랫폼에서 항목을 참조합니다.
이클립스가 잘못되었습니다.
보기 항목이 동일한 작업을 수행하는 경우 여러 @ + id / foo를 컴파일하는 동안 R.java 파일은 하나의 열거 만 작성하므로 모든 레이아웃의 각 항목에 @ + id를 사용할 수 있습니다. 예를 들어 동일한 작업을 수행하는 각 페이지에 저장 버튼이 있으면 각 레이아웃에서 android : id = "@ + id / button_save"를 사용합니다. R.java 파일에는 button_save에 대한 항목이 하나만 있습니다.
안드로이드 “@+id/”
와의 차이점“@id/”
첫 번째 ID
는 특정 UI 구성 요소 를 만드는 데 사용되고 다른 하나는 특정 구성 요소를 참조하는 데 사용됩니다
의 차이 @+id
와는 @id
것입니다 :
@+id
R.java
파일 에서보기의 ID를 작성하는 데 사용 됩니다.@id
R.java 파일에서보기 용으로 작성된 ID를 참조하는 데 사용됩니다.
@+id
와 함께 사용 android:id=""
하지만 ID가 생성되지 않고 생성되기 전에 참조하는 경우 (Forward Referencing).
이 경우, 우리는 @+id
id를 생성하는데 사용하고 뷰를 정의하는 동안 그것을 참조해야합니다.
아래 코드를 참조하십시오 :
<RelativeLayout>
<TextView
android:id="@+id/dates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/spinner" />
<Spinner
android:id="@id/spinner"
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_below="@id/dates"
android:layout_alignParentRight="true" />
</RelativeLayout>
위의 코드에서 Spinner의 id @+id/spinner
는 다른보기에서 작성되며 spinner를 정의하는 동안 위에서 작성한 id를 참조합니다.
따라서 뷰를 만들기 전에 뷰를 사용하는 경우 ID를 만들어야합니다.
참고 URL : https://stackoverflow.com/questions/5025910/difference-between-id-and-id-in-android
'Programming' 카테고리의 다른 글
프로젝트에서 CocoaPods를 제거하는 방법? (0) | 2020.02.17 |
---|---|
기록을 유지하면서 하나의 git repo에서 다른 복제본으로 복제하는 방법 (0) | 2020.02.17 |
ES6 생성기와 함께 redux-saga 사용 vs ES2017과 함께 redux-thunk 사용의 장단점 async / await (0) | 2020.02.17 |
java.time.LocalDateTime과 java.util.Date 간 변환 (0) | 2020.02.16 |
후행 공백을 자동으로 또는 바로 가기로 제거 (0) | 2020.02.16 |