2012-05-23 63 views
12

我在相對佈局內有以下內容。(找不到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> 

Eclipse中給了我這些錯誤的線機器人:layout_alignBottom = 「@ ID /按鈕a」 和android:分別layout_toLeftOf = 「@ ID /按鈕a」:

錯誤:錯誤:沒有資源發現匹配給定的名字(在'layout_alignBottom'的值'@ id/buttonA')。

錯誤:錯誤:找不到與給定名稱匹配的資源(位於'layout_toLeftOf',值爲'@ id/buttonA')。

用@ + id/buttonA替換@ id/buttonA會刪除這個eclipse錯誤信息。這是正確的做法嗎?如果是這樣,爲什麼會這樣呢?不是@ + id創建一個新的ID?我不想要一個新的ID。我想使用按鈕對象中引用的那個。處理這個問題的最佳方法是什麼?

謝謝你們。 -Joe

回答

31

使用@+id是正確的做法。 @+id會創建一個新的ID,但前提是該名稱不存在。

如果你不想這樣做,對於這個特殊的簡單情況下,將TextEdit移動到Button以下就足夠了。

+0

是的,我會這樣做。謝謝。 – J50

+2

我會交換它們,所以ID引用看起來不錯。謝謝。爲什麼@ + id工作?我不是想創建一個新的id資源,而是引用一個稍後定義的資源。 – J50

+0

@ J50:正是因爲它在後面定義,所以在嘗試使用它時尚未定義。這就是爲什麼使用@ + id的原因,因爲它強制定義這樣的id。 –

0

您試圖用作參考的佈局應在作爲參考使用之前定義,即用作'layout_toLeftOf'。

這就像你必須在使用它之前在java中聲明一個變量。聲明然後使用它...

相關問題