2015-10-16 91 views
-1

Pff,這是這些東西中的一個會毀掉你的日程安排,但你不想放棄。自2天以來,我的一些位圖資源無法加載並顯示在我的應用程序中。我將它釘在getDrawable()方法上,在提供的ResID上返回null。getDrawable返回null

我使用API​​ 22或Nexus 5物理設備在Genymotion Nexus 5上運行此操作。對於我的項目,我主要使用以下內容來加載drawables。

ResourcesCompat.getDrawable(context.getResources(),drawableID,null);

但因爲這個問題我也試過context.getDrawable(ID)getResources()。getDrawable(ID,getTheme())。每個方法都返回null。

其他的事情,可能是有趣:

  • 資源是在我的項目(在MDPI,華電國際,xhdpi & & xxhdpi)
  • 文件名的是正確的(xxx_yyy_zzz.png)
  • 清潔項目/刪除生成產品
  • 從我的回購中得到舊圖像文件:不加載
  • 資源已被複制並重命名:無法加載。
  • 在我的圖像編輯器中打開資源並保存爲全新文件:不加載。
  • 將資源複製到空虛擬項目中:它們實際顯示!
  • 我的資源的90%完美加載,它只是給出問題的幾個較大的位圖。
  • 該圖像在Android Studio佈局預覽(Nexus 5,Api 22)中顯示
  • 我已經包含一些測試(如副本),偶爾會實際加載,但這很少見。我真正關心的圖像永遠不會加載。

我也嘗試步入Android的代碼,並得到這些對getDrawable(ID):

  • 拋出新IllegalStateException異常( 「覆蓋的配置已經設置」)(ContextThemeWrapper.java)
  • 在AssetManager.java,getResourceValue我看到一個參數傳遞類型的TypedValue的與字符串「RES /可繪-xxhdpi-V4/{IMAGE_NAME} png格式」

後者提出了一些警鐘爲好,因爲我沒有帶-v4後綴的文件夾,所以我想知道它爲什麼創建它。但是單步執行Android Studio中的代碼對我來說並沒有什麼意義,因爲步入方法通常會讓我在Android的評論塊中正常工作。

無論如何,我希望有人對圖像資源也有一些奇怪的問題,並且可能能夠指出我爲什麼會發生這種情況的正確方向。事實上,圖像沒有損壞,我真的沒有看到我的方法調用或資源文件夾中的任何錯誤,使得我沒有選擇。

在此先感謝。

回答

0

唯一發生在我身上的事情是當我將圖像放入我的mipmap文件夾而不是普通的drawables文件夾中時。

當你開始輸入R.drawable。你能看到你的drawable嗎?

+0

是的,自動完成立即找到我所有的drawable,包括沒有加載,只要我輸入R.drawable。這些資源實際上是在drawable-mdpi(以及其他所提到的變種)文件夾中。 –