android r java




Android Studio中的“無法解析符號R” (20)

在我引用R.id.something所有類中的每一個實例中, R都是紅色的,它表示“無法解析符號R”。 同樣每次都有R.layout.something以紅色加下劃線並且表示“無法解析方法setContentView(?)”。 該項目總是很好。 看到這一直是令人討厭的。 我已經在這裡閱讀了許多其他類似的問題,但大部分都涉及從eclipse導入項目。 我正在使用我認為是android studio的最新版本,並且該項目是使用android studio創建的,沒有任何解決R問題的工作。 如果有人知道,我想知道是什麼原因造成的。

更新 :解決方案:當時android studio是全新的,我也是一個全新的開發人員。 我不應該使用android studio,我從來沒有意識到它是如何未完成的。 感謝大家在嘗試提供幫助後提供的支持,因為這已經發布。 具有諷刺意味的是,這個問題的實際答案已被刪除,無法取消刪除 。 我覺得我的原始答案是解決這個問題的方法。

我原來的回答被刪除了:

我想我已經找出了這個問題。 問題出在Android Studio上,每當我添加admob庫時,所有這些錯誤都開始了。 我所有其他沒有廣告的項目都沒有類似的問題。 我現在使用Intelij並遠離Android Studio


  1. 檢查你的XML文件。
  2. 清潔項目。

就是這個。

例如,我在我的strings.xml有一個條目:

<string name="A">Some text</string>

activity_main.xml我使用了這個字符串條目

<TextView
android:id="@+id/textViewA"
android:text="@string/A"/>

雖然一直在與項目合作,但我刪除了該項目

 <string name="A">Some text</string>

因此activity_main.xml變得無效。 結果:無法解決R.

所以,檢查你的*.xml文件和乾淨的項目。


Brother,R.java文件包含xml和java頁面之間的鏈接。 只有在某些資源文件出現問題時才會出現“R無法解析”。 所以最好的和有效的方法是刪除最後完成的xml或res文件中的drawable。 然後再根據android編碼規範從那裡開始。 這是唯一的方法。 有效和正確的方式。

也可以使用Git來正確跟踪代碼。 ..

快樂編碼.. :)


上述答案都沒有幫助我。 我終於意識到問題在於Android Studio中缺少“build”文件夾。 我在項目“iml”文件中找到了許多行,不包括“build / *”。 刪除這些後,生成文件出現,錯誤消失。


你最近是否更新過SDK工具? 啟動android SDK管理器並確保您擁有最新的SDK工具,它現在與平台工具分開。 當我第一次更新我的SDK管理器時,我遇到了同樣的問題,在我關閉並重新打開SDK管理器之前,SDK 編譯工具包沒有顯示出來進行安裝/更新。


做:建立>清潔項目

重要提示:確保在消息窗格中清除項目後沒有任何錯誤(Alt + 0)。 如果您發現任何帶有感嘆號的紅色圓圈,則必須刪除代碼中的這些錯誤。

大多數這些錯誤都與@ string /或@ array /相關。 再次清理項目並完成!


只需清理您的項目並使用Gradle文件同步項目。

問題將得到解決。


同樣的問題。 開始時,我在我的可繪製文件夾中添加了一些圖像並嘗試訪問它們。 此外,圖片添加了大寫字母的擴展名。 這似乎已經崩潰的構建,因為即使我重命名他們,消息是相同的,R是無法訪問。 我所做的是,在.iml文件中,我查找了excludeFolder並將其刪除(如下圖所示):

  <excludeFolder url="file://$MODULE_DIR$/build/apk" />
  <excludeFolder url="file://$MODULE_DIR$/build/assets" />
  <excludeFolder url="file://$MODULE_DIR$/build/bundles" />
  <excludeFolder url="file://$MODULE_DIR$/build/classes" />
  <excludeFolder url="file://$MODULE_DIR$/build/dependency-cache" />
  <excludeFolder url="file://$MODULE_DIR$/build/incremental" />
  <excludeFolder url="file://$MODULE_DIR$/build/libs" />
  <excludeFolder url="file://$MODULE_DIR$/build/manifests" />
  <excludeFolder url="file://$MODULE_DIR$/build/res" />
  <excludeFolder url="file://$MODULE_DIR$/build/symbols" />
  <excludeFolder url="file://$MODULE_DIR$/build/tmp" />

之後,我重建了這個項目,R神奇地重新出現了。


在Android Studio的最新版本中,至少對我而言,以下工作:

“工具” - >“Android” - >“使用Gradle文件同步項目”


如果在將java文件或目錄移動到其他位置後發現此錯誤,則可以保證Android Studio已經變得混亂。 你猜怎麼著? 撤消這些操作並不能解決問題。

所以你嘗試一個乾淨的,但這是行不通的。

重新啟動也不起作用。

但嘗試文件 - >無效緩存/重新啟動... - >無效和重新啟動。

Android Studio維護關於哪些文件依賴於哪些其他文件的信息。 由於移動文件的執行不正確,移動文件會導致錯誤。 這還不是全部:這些依賴關係的緩存被用來加速構建。

這意味著您不僅需要重新啟動,還需要使這些緩存失效以恢復(或更準確地說,重建)理智。


導致此錯誤的原因很多。

  1. 有時會出現這樣的情況,即用同名的圖像文件替換。
  2. 假設你從佈局.xml中刪除了一個項目,並且聲明了一個<Button/>但它仍然在任何Activity或片段.java中聲明。
  3. 還有很多。

跟踪錯誤的最好方法是重建它,而非干淨或同步做一些故意的錯誤。

如果它不能解決你的問題,那麼必須有一些缺陷或運行時錯誤或由於資源使用不當造成的錯誤,可能是你的代碼中的java或xml文件或迫使gradle停止的設計,因為(R )esource文件無法正確索引資源,您必須承認這一點。

如果您的項目在進行更改之前運行,請註釋您所做的更改並嘗試重建項目。

它肯定會起作用,因為不會有任何變化。

要追踪確切的錯誤,請通過將更改分解為更小的模塊來檢查更改。

例如 - 如果通過單擊按鈕使列表可見並在適配器中插入列表值,請首先檢查是否可以使其可見或不可見,然後檢查適配器錯誤。


我也有這個問題。 一個簡單的'gradlew clean'和'gradlew build'完成了這個訣竅。

點擊Build- > Clean Project ,這將執行一次gradle clean


我最近有這個問題,乾淨/建設等沒有解決它。 我猜我在某個地方遇到了問題,但不確定在哪裡尋找它(是否在清單中,資源XML文件等?)。

如果出現問題,您可以通過執行代碼分析來了解它是什麼。

從頂部的菜單中選擇:

分析 - >檢查代碼,使用“默認”配置文件掃描整個項目。

您的檢測結果將包含一個名為“Android”的元素。 在這裡,您將獲得任何導致資源和清單文件出現問題的列表。 這些錯誤將打開您的構建生成的XML文件,這將顯示紅色的任何錯誤。

我的確切問題是由於我使用基於flavor的清單文件而引起的,我偶然在<application>標記中復制了一些權限。

更新:在Android Studio仍然在修復後顯示錯誤之後,我確實遇到了問題,儘管現在可以在錯誤仍然存在的情況下生成並運行得非常好。 (我正在運行一個金絲雀建設,所以現在把它放下來)


我有類似的問題,這就是我所做的:

清潔項目和與Gradle同步項目,

在我的SDK中檢查buildTools版本

從構建gradle(模塊)將minSdkVersion從8更改為9

defaultConfig {
        applicationId "PackageName"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

但是這一切都沒有幫助。

最後,我找到了答案(這在我的情況下工作)

從build.gradle(module:app)更改

android {
    compileSdkVersion 21
    buildToolsVersion '21.0.1'
......
....
}

要么

選擇File | 項目結構將構建工具版本更改為21.1.1


我認為如果你把你的活動文件放在另一個文件夾中而不是默認文件夾。 您需要將com.example.yourproject.R(這是您的項目R文件NOT Android.R文件)導入到使用R的所有活動中。例如,在MainActivity文件中插入以下行:

import com.example.yourproject.R;


我遇到了同樣的問題,大部分時間都是通過解決

  • 將項目與Gradle文件同步
  • 建設 - >清潔項目
  • 文件 - >使緩存無效

但是這一次,即使做了所有這些事情,錯誤仍然存在,最後我發現了罪魁禍首。

問題出在一個xml文件中 ,我已經給出了android:id普通字符串值,而不是id資源類型

錯誤

android:id="username"

更正

android:id="@id/username"

搞砸與XML文件中的resources相關的事情是造成這種錯誤的主要原因。注意它可能不會在xml佈局文件中顯示為錯誤。

注意

在大多數情況下,編譯器會向您顯示消息中的錯誤來源。 嘗試在嘗試其他解決方案之前先嘗試檢查它


改變最新的sdk版本,這對我很有用

1.單擊文件,然後單擊項目結構2.然後選擇“應用程序”,然後單擊確定,它為我工作。


老兄,我認為這里黑暗中有很多鏡頭。 在某些情況下,只有在解決問題後,清理和同步項目才會有所幫助。

第一步:所以去看看包裝的每個文件的頂部,如下所示pakage="YourURL.YourProject"; 並確保指定了正確的軟件包(您自己的項目)。 您可以在java文件和AndroidManifest.xml中找到它,並且對於java文件來說,引用正確的包是至關重要的,因為該包包含您指向的資源(“R”)。 如果它們不匹配,無法解決符號R發生的錯誤。

第二步:清理,同步,不管。 完成

那麼為什麼這會隨機發生,或者我做錯了什麼?

如果你複製和粘貼代碼,你應該密切關注上面解釋的“package =”。 更重要的是,當你粘貼代​​碼時,它會立即運行一種調試器 (請原諒我的壞技術術語)向你展示“假定的錯誤”,它會立即考慮到“錯誤的包”,並且你會得到所有的錯誤。 因此,即使您在粘貼後立即更正了記號,調試器也已刷新。 這就是為什麼“乾淨,同步,無論”有什麼作用有時候


這個問題似乎有很多原因。 最近,我添加了一個活動,以稱為NewActivity進行測試。 這創建了一個名為res/menu/new.xml的文件,並且gradle不喜歡這個名字,因為new是一個保留字。

gradlew clean

要么

"Tools" -> "Android" -> "Sync Project with Gradle Files"

這些絕對是很好的嘗試,但在運行這些命令之前,您可能還需要解決一些其他問題。


這對我來說非常頭疼。 在我的情況下,在Android Studio中配置“Google Play服務”(安裝+ build.gradle配置)後出現錯誤。 這反過來需要minsdk> 7,但錯誤很不明確(實際上,對此的投訴僅以“信息”出現)。 無論如何..在清單文件和build.gradle文件中將minsdk更改為8並重建項目時,錯誤消失了。

所以..關於這個的一般性建議,如果我可以概括 - 你的清單文件或其他一些配置文件中可能存在一些問題,從而阻礙了正確的構建。 嘗試尋找真正的錯誤報告,即使是標題為“信息”的消息,以獲取關於它可能是什麼的提示......


這是一個非常古老的問題,但它仍然發生很多,這裡沒有真正全面的答案。

我有這個問題比我想承認的次數多。 這可能是由各種各樣的問題引起的,大多數問題都與您的項目結構不符合預期的問題有關。 以下列出了我所遇到的所有問題:

從Eclipse導入到Android Studio並不總是很流暢,尤其是在舊版Android Studio中。 確保你使用的是正確的目錄樹。 它應該看起來像這樣一個適度成熟的應用程序:

AppName/        // AppName is your app's name, obviously
    .gradle/    // This is a compiler created directory. You should normally leave it alone
    .idea/      // Ditto
    build/      // This too
    gradle/     // And this
    app/
        build/
        libs/
        src/
            androidTest/   // Tests based on the Android instrumentation runner should go here
            main/
                java/
                    fully/           // Typically com
                        qualified/   // the domain name. Longer package 
                                     // names may have deeper folder trees
                            AppName/ // All your java files go here
                res/
                    drawable-*/      // One of these for each resolution you support
                    layout/          // All of your general layouts
                    menu/            // All of your menu layouts
                    values/          // All of your resource xml files
                    xml/             // PreferenceScreen layouts go here
                AndroidManifest.xml
            debug/         
            test/          // Pure jUnit tests should go here
        .gitignore
        app.iml
        build.gradle   // This is the gradle file you should be making most changes to
        proguard-rules.pro
    .gitignore
    build.gradle       // This gradle file should mostly be left alone
    gradle.properties
    gradlew
    local.properties
    AppName.iml
    settings.gradle

它在你的IDE中可能看起來不像這樣。 文件樹上方有一個下拉列表,以不同的方式顯示您的文件,並且在我的系統上默認為一個名為Android的文件夾,可將您的文件分為不同的類型。 從名為Project的項目中解決這類問題更容易,甚至可以直接從操作系統的文件系統中更輕鬆地解決,因為Android Studio會將僅包含其他文件夾的文件夾折疊到一行中。

特別是如果您更改了應用程序的名稱,則需要確保更新了源代碼樹main / java / com / domain / AppName。 還要確保AndroidManifest.xml中的包標籤是正確的。

如果您的Gradle文件或AndroidManifest.xml中存在錯誤,這將阻止Android Studio正確構建您的資源文件。 Gradle文件有時可以通過升級Android Studio來打破,尤其是在1.0之前的版本。 有時候這是因為它停止支持舊版本的Gradle插件,所以你需要更新你的版本號。 有時可能很難找到當前版本。 截至今天,2015年7月17日,我的應用程序正在使用com.android.tools.build:gradle:1.2.3編譯。 這在最外面的gradle文件的依賴塊中,

如果您的AndroidManifest引用了一個不存在的drawable或string資源或活動,它將會中斷並導致此錯誤。 有時,如果任何引用不存在的可繪製或字符串資源,你會得到這個錯誤。

如果您的資源中有損壞的文件或無效的xml文件,則會出現此錯誤。

根據我的經驗,有時Android Studio會無緣無故地打嗝,您需要重新啟動它和/或您的PC。 我不知道為什麼,但有時它是有效的。

如果您有兩個具有相同名稱的xml資源,那麼在不相互覆蓋的目錄中,您可能會遇到此問題。 例如,您可以在drawable-mhdpi和drawable-xhdpi中使用相同的名稱,因為它們會根據目標設備相互覆蓋,但如果您在佈局和菜單中使用相同的名稱,則會導致問題。 重命名或刪除其中一個文件。

如果只有一些資源存在此問題,那麼這些資源很可能位於錯誤的目錄中。

在一個案例中,我不得不完全重新安裝Android Studio。 我不知道什麼是錯,但它的工作。

在一個案例中,我將整個項目移至不同的目錄,並將其重新導入為新項目。 我不知道什麼是錯,但它的工作。

帶名稱保留字的Xml文件可能會導致此問題。 重命名或刪除它們。

Gradle文件有幾種方法可以最終引用您尚未安裝的構建工具版本。 通過更改Gradle或下載適當的構建工具來糾正此問題。

最後,在你修正了錯誤之後,你需要清理你的Gradle項目。 您可以通過轉至頂部的Build菜單並選擇Clean Project來完成此操作。







r.java-file