Я создаю приложение для отображения изображений из ранее указанного источника.Я буду загружать эти изображения, если файл версии изменился.Если нет доступного интернет-соединения, на нем будут отображаться локальные изображения, которые я ранее скачал.
Для этого я использую объекты ImageView и Drawable, например:
String imageName = Startseite.FILENAME_PRE + "1" + Startseite.FILENAME_POST;
Drawable d = Drawable.createFromPath(imageName);
mImageView.setImageDrawable(d);
Я тройнойпроверил через DDMS, что указанный файл (в данном случае «page1.jpeg») действительно существует в каталоге «data / data / out.path / files / image1.jpeg».Однако в приведенном выше примере кода вторая команда возвращает нулевой объект.Файл доступен для чтения и записи обычными средствами (потоками), но, похоже, ImageView не нравится изображение.
Я не уверен, как действовать дальше.Возможно, я упустил важный элемент безопасности, который позволяет отображать изображения.Или, может быть, изображение не может быть отображено.Есть ли инструмент для проверки отображаемых изображений?
Спасибо за ваше время.
Редактировать 1: Я изменил код на это:
String imageName = Startseite.FILENAME_PRE + "1" + Startseite.FILENAME_POST;
String imageNameWithPath = getApplicationContext().getFilesDir().getPath() + '/' + imageName;
Drawable d = Drawable.createFromPath(imageNameWithPath);
Это создаетDrawable объект успешно.К сожалению, при назначении объекта с помощью SetImageDrawable () мой отладчик сходит с ума и читает 4 исключения в классах, о которых я никогда не слышал (скорее всего, в некоторой версии Android).Я проверил двойную косую черту (потому что я копирую одну в конец), но путь выглядит чистым.
Редактировать 2: К сожалению, то же самое происходит, когда я создаю нарисованный из потока и не загружаю изображениезаранее.
Редактировать 3: Вот фрагмент кода LogCat, когда приложение не работает.
06-28 08:14:32.323: WARN/dalvikvm(21462): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
06-28 08:14:32.323: ERROR/AndroidRuntime(21462): Uncaught handler: thread main exiting due to uncaught exception
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.ourcompany.apps/de.ourcompany.apps.Startseite}: java.lang.NullPointerException
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.os.Handler.dispatchMessage(Handler.java:99)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.os.Looper.loop(Looper.java:123)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread.main(ActivityThread.java:4363)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at java.lang.reflect.Method.invokeNative(Native Method)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at java.lang.reflect.Method.invoke(Method.java:521)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at dalvik.system.NativeStart.main(Native Method)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): Caused by: java.lang.NullPointerException
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at de.ourcompany.apps.Startseite.displayImages(Startseite.java:61)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at de.ourcompany.apps.Startseite.onCreate(Startseite.java:42)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): ... 11 more
06-28 08:14:32.373: INFO/Process(64): Sending signal. PID: 21462 SIG: 3
06-28 08:14:32.373: INFO/dalvikvm(21462): threadid=7: reacting to signal 3
06-28 08:14:32.373: ERROR/dalvikvm(21462): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
Я попробовал версию, используя метод BitmapFactory.decode (), к сожалению, это приводит к исключениюа также.
Что я могу добавить: следующий код взят из видеоуроков:
String mUrlString = "http://www.android.com/images/gingerdroid.png";
try {
mImageView.setImageDrawable(
Drawable.createFromStream(
(InputStream) new URL(mUrlString).getContent(),
"qrcode")
);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Этот код работает в учебнике, но он точно так же завершает работу с точно таким же изображениемчто мои попытки делают до сих пор.
Надеюсь, что это помогает.
Редактировать 4: Проблема вроде бы разрешилась сама собой.Я создал проект заново, copypastad старый источник, создал VM заново, вдруг он работает.Если это был старый проект или виртуальная машина, точно сказать не могу.