[android] Android의 다른 레이아웃에서 동일한 ID를 사용할 수 있습니까?

저는 Android 개발이 처음입니다. 이미지와 TextViews다른 LayoutXML 파일 에 동일한 ID를 사용해도 괜찮 습니까?

eclipse가 나를 위해 자동으로 나열하면 프로젝트의 모든 레이아웃 변수가 나열되므로 충돌할까요? 지금까지 다른 레이아웃에서 동일한 ID를 사용하는 데 어떤 문제도 발견하지 못했지만 장기적으로는 걱정됩니다.



답변

레이아웃마다 다른 ID를 사용하는 것이 좋습니다. 장기적으로 레이아웃이 많고 ID가 많으면 구분하기가 매우 복잡해집니다.

나는 보통 다음과 같이 내 ID의 이름을 지정 layoutName_elementId합니다.

특히 자동 완성 기능을 사용할 때 찾고있는 ID를 쉽게 찾을 수 있습니다 (작업중인 레이아웃은 알고 있지만 ID는 실제로 모릅니다.이 경우에는 이름 지정 전략을 사용하여 레이아웃 이름 만 입력하면 해당 레이아웃의 모든 ID가 표시됩니다.

레이아웃 및 ID에 대한 자세한 정보는 여기 에서 찾을 수 있습니다 .

즐거운 코딩,


답변

짧은 대답 : 예, 가능합니다.

긴 답변 : 레이아웃의 일부에 대한 참조를 얻기 위해 findViewById ()를 사용할 때마다 메서드는 현재 부풀린 레이아웃에서만 해당 뷰를 검색하기 때문에 이렇게 할 수 있습니다. 따라서 다른 레이아웃에 동일한 ID를 가진 다른 뷰가 있어도 Android는 해당 뷰를 찾지 않습니다.


답변

개발자 API 가이드에 따르면 :

ID는 전체 트리에서 고유 할 필요는 없지만 검색중인 트리 부분 내에서 고유해야합니다 (종종 전체 트리 일 수 있으므로 가능하면 완전히 고유하는 것이 가장 좋습니다).

따라서 짧은 대답은 필수는 아니지만 가능한 충돌을 피하는 것이 좋습니다.


답변

권장하지 않습니다. 나중에.을 리팩터링해야하는 view id경우 Android 스튜디오가 모든 XML파일과 클래스 에서 리팩터링하여 문제가 발생할 수 있기 때문 입니다.

그러나 id일부 추상이 있고 여러 레이아웃을 재사용하는 경우 와 같이 동일하게 사용해야하는 경우도 있습니다.

프로젝트에 views동일한 항목 이 여러 개 있고 id's리팩터링해야하는 경우 수동으로 수행하고 IDE 기능에서 빌드를 사용하지 않고 레이아웃 id내부의 대상보기에서 변경 XML한 다음 레이아웃 내부 의 빨간색 오류를 수정합니다.


답변