2013-10-02 1 views
0

У меня есть этот код:Drawable.createFromPath (Filepath) возвращение нулевого, хотя файл существует

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); 

метод Андроида 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(); 

я все еще хотел бы знать, чтобы просто сохранить файлы побайтно, так что я не должен откройте изображение и перекомпонуйте его.