2013-10-02 133 views
0

我有這樣的代碼:Drawable.createFromPath(文件路徑)返回null雖然文件中存在

String filePath = getActivity().getFileStreamPath("into11.png").getAbsolutePath(); 
     if(Drawable.createFromPath(filePath)!=null){ 
     img.setImageDrawable(Drawable.createFromPath(filePath)); 
     } 
     else{ 
     Log.d("nulllllllllllllllllllllllllllllllll","yessssssssssssssssssssssssssss"); 
     } 

文件路徑爲獲得圖像的正確道路「數據/數據/.../ intro11.png」但Drawable.createFromPath(filePath)爲null,所以這是什麼原因?

+0

你的文件位於哪裏...? – Piyush

+0

它在res中的可繪製文件夾中,其路徑爲/data/data/packagename/files/into11.png – User

+1

嘗試使用URI代替:Uri uri = Uri.fromFile(filePath); \t \t img.setImageURI(uri); –

回答

0
Drawable d = getResources().getDrawable(R.drawable.smiley); 

要在圖像視圖顯示它

ImageView i = new ImageView(this); 
i.setImageResource(R.drawable.smiley); 

或在XML文件中

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/smiley"/> 
+0

我知道這種方法謝謝,但我不想使用它,因爲我在viewpager中添加圖像,並且此方法導致超時錯誤,所以我看到有人試圖使用createfrompath ...並且它工作... – User

0

使用此代碼:

File drawableFile = new  File(getApplicationContext().getFilesDir().getAbsolutePath()+"/into11.png"); 

    if(Drawable.createFromPath(drawableFile.getAbsolutePath())!=null){ 
    img.setImageDrawable(Drawable.createFromPath(drawableFile.getAbsolutePath())); 
    } 
    else{ 
    Log.d("nulllllllllllllllllllllllllllllllll","yessssssssssssssssssssssssssss"); 
    } 


我希望這有助於和解決你的問題問題。

0

用戶moh.suhkni在原來的問題發表評論,差不多完全解決了我。

他貼:

Uri uri = Uri.fromFile(filePath); 
img.setImageURI(uri); 

,我最終需要爲解決方案:

final Uri uri = Uri.parse(url); 
final String path = uri.getPath(); 
final Drawable drawable = Drawable.createFromPath(path); 
img.setImageDrawable(drawable); 

因爲某種原因,這是行不通的:

final Drawable drawable = Drawable.createFromPath(url); 
// drawable ended up being null 
img.setImageDrawable(drawable); 

Android的Drawable.createFromPath()方法不能像我的那樣喜歡以file://開頭的路徑。使用Uri.parse()修復了我的問題。

希望這可以幫助!

0

我有這個相同的問題,對我來說,我試圖從我以前保存到內部存儲的文件中繪製Drawable。我的問題最終是因爲我的文件被錯誤地保存了,所以它沒有創建drawable。它還在調試控制檯中拋出錯誤。

我希望這有助於某人。

這是我的代碼保存(位註釋掉是我錯過了什麼):

URL url = new URL(remoteFile); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setDoInput(true); 
conn.connect(); 
InputStream is = conn.getInputStream(); 
Bitmap bm = BitmapFactory.decodeStream(is); 
FileOutputStream fos = mainActivity.openFileOutput(filename,    
Context.MODE_PRIVATE); 
ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
// bm.compress(Bitmap.CompressFormat.PNG, 100, outStream); 
byte[] byteArray = outStream.toByteArray(); 
fos.write(byteArray); 
fos.close(); 

我還是想知道,只是保存文件逐字節,所以我不必打開圖像並重新壓縮它。