2017-01-14 21 views
0

我已經在github上看着這個Android繪圖應用程序:在以下錯誤的加號:機器人:圖標=「@ +繪製/

https://github.com/valerio-bozzolan/AcrylicPaint

在一個XML文件中定義的佈局對於一個菜單,所有android:icon行在drawable之前都有一個加號。我在stackoverflow或其他地方找到的drawable沒有任何示例有加號。而Android Studio 2.2.3給了我一個「無法解析符號」的錯誤對於他們每個人來說,如果我刪除了加號,那麼這個錯誤就會消失,但是這個應用似乎也可以用加號正常工作,加號顯然是錯的嗎?在這裏,我不明白的事情?

該文件是/app/res/menu/main.xml,如果你想看看它。以下是一些示例代碼的屏幕截圖,包含紅色文本中的錯誤。感謝您的任何幫助,您可以提供。

enter image description here

+4

呀,那些沒有去那裏。它只是'「@ drawable /不管」「。 –

+0

「+」用於「id」屬性。在'@ + id/color_menu'中,它意味着在'R.id'中創建一個名爲'color_menu'的新字段,以便您可以在代碼中訪問它。 – QBrute

回答

2

馬虎的錯誤。你必須使用@drawable,而不是@ +繪製

android:icon="@drawable/ 

顯示你訪問你保持你的應用程序的繪製文件夾中可繪製。

0

只有ID編碼爲android:id="@+id/dummy"

因爲你不需要有繪製和其他的東西+在它

,它可以像android:icon="@drawable/yourImage"

android:style="@style/myStyle" 
0

android:id="@+id/aSampleId"使用,則無法生成圖像在飛行中。如果你想訪問可繪製的文件夾,那麼你需要在文件夾本身有一個圖像。

假設你有在繪製文件夾drawable/anImage.png的圖像,那麼你就需要用android:icon="@drawable/anImage"

1

它來調用,這樣的加號,看起來你的情況謎。讓我詳細解釋加號。

  1. 當我們給任何視圖賦予一個id時,它通常是新的,並且在id類中不存在id引用。
    因此,當您使用類似findViewById(R.id.view)的東西時,您無法訪問該特定ID,因爲它不可用。
    因此,爲了通知編譯器必須在R.id文件中添加新的引用,我們聲明id爲android:@+id/view,這裏+表示將此ID添加到R.id引用。

  2. 但是在繪製,樣式,顏色等情況下,您首先在它們各自的文件夾中創建它們,這些文件夾可由編譯器訪問(例如Gradle),並在其各自的類中自動引用,如R.drawable,R .style等
    因此,當我們在xml中引用它們時,我們不使用+符號,因爲在其各自的聲明中已經創建了該引用。