2016-09-23 105 views
0

我找到了解決方法,我將發佈這個答案,但它仍然引發了爲什麼它首先發生的問題。Android Studio:通過設計GUI添加@ + id生成錯誤

當我嘗試通過設計GUI添加一個新的ID,我鍵入名稱在框中:只要我標籤開箱

id_sample 

,它預先考慮@+id/

@+id/id_sample 

這聽起來足夠合理,因爲 - 嘿,它必須在指令中添加一個新的ID,按照documentation,對吧?


但是當我進入java代碼,自動完成的是給我亂碼的代碼方面 - 由於額外@+id/,自動完成讓我@+id/id_sample了總計

menu.findItem([email protected]+id/id_sample); 

其中有無效字符;而刪除它們:

menu.findItem(R.id.id_sample); 

給出了錯誤Cannot resolve symbol 'id_sample'因爲XML是堅持正確的名稱包含無效字符。 Catch 22.

那麼我該如何正確引用一個id?

回答

0

尋找在XML中,@+id/居然被添加@+id/id_sample

android:[email protected]+id/@+id/id_sample 

這顯然給了編譯器一個心臟發作。在弄清楚發生了什麼之後,很容易(雖然很乏味)足以跳入xml並刪除額外的@+id/,但我看不到任何讓設計人員將它放在首位的方法。

一旦在xml中對此進行了更正,它將在GUI中自動更正,當您進入java代碼時,autocomplete會爲您提供正確的名稱,並且編譯器會識別它。

剩下的就是想知道是否有我做錯的事情導致了這一點。這是一個已知(或未知)的錯誤?知道什麼是錯的,它可以在xml中修復,但看起來GUI應該首先得到它。對?

+0

這不太可能。由於R.id是靜態Java類,並且您通過xml文件生成的每個資源ID都必須在id內部類下聲明。我想工作室不能添加這個,因爲它不是一個有效的變量名,但更有可能在自動完成列表中。 –