2016-09-20 61 views
0

我有一個奇怪的問題。我試圖從我的Android項目中的res/drawable文件夾中使用PNG文件,並在ImageButton中使用這種PNG文件(它具有「setImageBitmap(Bitmap bm)」方法),我需要解碼PNG圖像我有我的res/drawable文件。然而,當我複製路徑,並嘗試像這樣對其進行解碼:位圖工廠拋出FileNotFoundException

public Bitmap getBitMap() { 
    return BitmapFactory.decodeFile("drawable/bishop00.png"); 
} 

我看到一些線程說,我還可以使用BitmapFactory的「decodeResources」的方法,但是這個代碼是不是在一個活動,我不希望將一個活動用作參數來使用該方法,因爲這應該起作用。我已經使用這個絕對路徑(複製這說明我的系統的整個層次路徑)也嘗試過,但我仍然得到以下異常:

Unable to decode stream: java.io.FileNotFoundException 

真的希望能得到一些幫助,看到我徹底確定該文件存在。

+0

手機上是否存在drawable/bishop00.png文件? – immibis

+0

不,我試圖解碼從我的Android項目(我在原來的帖子中說),然後顯示它在我的應用程序 – tomSurge

+1

我修復了問題的標題。拋出'FileNotFoundException'沒有什麼奇怪的。該文件不存在,並且拋出異常 – Budius

回答

1

我試圖用一個PNG文件從我的資源/文件夾繪製我的Android項目

那是你的開發機器上的一個文件中。這不是Android設備上的文件。

看到,因爲這應該工作

不,它不應該。

我看到一些線程說,我還可以使用BitmapFactory

的「decodeResources」方法是正確的答案,假設這個內容應該是擺在首位的可繪製資源。儘管使用decodeResource()有一些合理的原因,但它並不是全面通用的。可能還有其他更適合使用可繪製資源的方法,或者首先這可能不應該是可繪製的資源。

但是這個代碼不處於活動

decodeResource()需要Context。它不一定是Activity,儘管這通常是可能的候選人。你所有的代碼都是沿着一段以Context開頭的代碼路徑執行的;你應該沒有問題在這裏使用。

+0

感謝您的輸入。除了使用「decodeResources」之外,還有其他建議嗎? – tomSurge

+0

@tomSurge建議使用decodeResources。 – immibis

+0

@tomSurge:我不能很好地回答這個問題,不知道你是在努力做什麼。你打算怎麼處理'Bitmap'? – CommonsWare

相關問題