2016-09-20 8 views
0

У меня возникла странная проблема. Я пытаюсь использовать PNG-файл из моей папки res/drawable в моем проекте Android и использовать такой PNG-файл в ImageButton (у которого есть метод «setImageBitmap (Bitmap bm)»). Мне нужно декодировать PNG-изображение, которое У меня есть файл res/drawable. Тем не менее, когда я скопировать путь и попытаться расшифровать его, как например:Bitmap Factory throws FileNotFoundException

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

Я видел некоторые темы, которые считают, что я мог бы использовать «decodeResources» метод BitmapFactory, но этот код не в деятельности, и я не хочу использовать активность в качестве параметра, чтобы просто использовать этот метод, поскольку это должно работать. Я также попытался использовать абсолютный путь к этому (копированию пути, который показывает всю иерархию моей системы), но я все еще получаю следующее исключение:

Unable to decode stream: java.io.FileNotFoundException 

Действительно надеется получить некоторую помощь, видя, как я полностью убедитесь, что файл существует.

+0

Есть ли файл drawable/bishop00.png на вашем телефоне? – immibis

+0

Нет, я пытаюсь расшифровать его из моего проекта андроида (который я сказал в исходном сообщении), а затем отобразить его в моей заявке – tomSurge

+1

Я исправил заголовок вопроса. Нет ничего странного в том, что вы бросаете «FileNotFoundException». Файл не существует и исключение выбрано – Budius

ответ

1

Я пытаюсь использовать файл PNG из моего Реза/вытяжки папки в моем Android проекта

То есть файл на компьютере разработчика. Это не файл на устройстве Android.

видя, как это должно работать

Нет, это не должно быть.

Я видел некоторые темы, которые считают, что я мог бы использовать «decodeResources» метод BitmapFactory

То есть правильный ответ, предполагая, что это содержание должно быть вытяжке ресурс в первую очередь. Хотя существуют некоторые веские причины для использования decodeResource(), это не так часто используется в целом. Могут быть и другие способы использования ресурса, который является более подходящим, или, возможно, это не должно быть ресурсом, который может быть использован в первую очередь.

, но этот код не в деятельности

decodeResource() занимает Context. Это не должно быть Activity, хотя обычно это вероятный кандидат. Весь ваш код выполняется по некоторому пути кода, который начинается с Context; у вас не должно быть проблем с тем, чтобы использовать его здесь.

+0

Спасибо за ваш вклад. Есть ли у вас какие-либо другие предложения, кроме использования «decodeResources»? – tomSurge

+0

@tomSurge Предполагается использовать decodeResources. – immibis

+0

@tomSurge: Я не могу с готовностью ответить на это, не зная, что именно вы пытаетесь сделать в целом. Что вы намерены делать с «Растровым»? – CommonsWare