2012-05-23 2 views
12

다음은 상대 레이아웃 안에 있습니다. layout_alignBottom = 및 안드로이드 "ID/buttonA @": layout_toLeftOf = "@ 아이디/buttonA"각각 :(id 참조를 찾을 수 없음) 주어진 이름과 일치하는 리소스가 없습니다

오류 : 오류 : 자원이 일치하는 것을 발견

<TextEdit 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@id/buttonA" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_toLeftOf="@id/buttonA" /> 

<Button 
    android:id="@+id/buttonA" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:text="@string/message" > 
</Button> 

이클립스 라인에서 나에게 안드로이드를 이러한 오류를 제공합니다 주어진 이름 ('layout_alignBottom'에 값 '@ id/buttonA').

오류 : 오류 : 지정된 이름 ('@ id/buttonA'값을 가진 'layout_toLeftOf')에 일치하는 리소스가 없습니다.

@ id/buttonA를 @ + id/buttonA로 바꾸면이 일식 오류 메시지가 제거됩니다. 그것이 옳은 일입니까? 그렇다면 왜 대신 작동합니까? @ + id가 새 ID를 만들지 않습니까? 나는 새로운 이드를 원하지 않는다. 버튼 객체에서 참조 된 것을 사용하고 싶습니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

감사합니다. -Joe

답변

31

@+id을 사용하면 올바른 방법입니다. @+id은 새 ID를 만들지 만 그 이름을 가진 ID가없는 경우에만 만듭니다.

이렇게하고 싶지 않다면이 특별한 경우에 TextEditButton 아래로 옮기는 것으로 충분할 것입니다.

+0

그래, 그냥 할께. 감사. – J50

+2

ID 레퍼런스가 잘 보이도록 주변을 바꿀 것입니다. 감사. 왜 @ + id가 작동합니까? 나는 새로운 id 리소스를 만들려고하지 않고 나중에 정의 된 리소스를 참조한다. – J50

+0

@ J50 : 정확하게 정의 했으므로 나중에 사용하려고 할 때 아직 정의되지 않았습니다. 이것이 @ id 작업을 사용하는 이유입니다. 왜냐하면이 ID의 정의를 강제하기 때문입니다. –

0

참조로 사용하려는 레이아웃은 'layout_toLeftOf'로 사용하기 전에 정의해야합니다.

Java를 사용하기 전에 변수를 선언해야하는 것과 같습니다. 선언 한 다음 사용하십시오 ...

관련 문제