2017-05-11 1 views
1

나는 몇 가지 다른 레이아웃을 가지고 있습니다. 각각은 xml 태그에 동일한 뷰 ID를 가진 하위 태그가 있습니다.getId()는 다른 레이아웃에서 비슷한 이름의 뷰에 대해 고유 한 값을 반환합니까?

예를 들어 my_layout_one에는 view1 인 하위보기가 포함되어 있으며 my_layout_two도 있습니다.

view1에 호출 된 경우 getId()은 위의 레이아웃 중 어떤 것이 부풀려 졌는지에 관계없이 동일한 값을 반환합니까?

답변

1

id이 적용되는 각 ViewR.java 클래스에 해당하는 값을 가지며 app/build/generated/source/r/debug/com/your/package 디렉토리에 있습니다. 당신이 다른 레이아웃에서 선언 한에 관계없이 얼마나 많은 다른 View

 


    public final class R { 

     public static final class id { 
      ... 
      public static final int view1 =0x7f0d007e; 
      // other view's ids 
      ... 

     } 
    } 

 

는, 그 모두가 xml 레이아웃에 적용되는 동일한 ID를 가지고 가정 R.java 클래스에서 같은 값을 가질 것이다.

View#getId()R.java 클래스에서 값을 반환하지만 아무 것도 수행하지 않습니다.

질문에 대답 - 예, getId()은 어떤 레이아웃이 팽창되었는지에 관계없이 동일한 ID를 반환합니다.

0

azizbekian's 답변 외에도 setContentView()을 사용하여 모든 활동에서 레이아웃을 설정하면 해당 레이아웃이 비정상적으로 증가하므로 모든 최상위보기가 활동에 추가됩니다. findViewById()을 호출하면 활동 레이아웃의보기가 반환되고 다른 레이아웃 리소스 파일에는 동일한 ID가있는 다른보기가 표시되지 않습니다.

따라서 분명히 view1.getID()으로 전화 할 때 view2가 아닌 view1 ID를 반환합니다. 그들은 똑같은 ID를 가지고 있지만 안드로이드 시스템은 view1 만 확인하고 view2는 확인하지 않을 것입니다.

관련 문제