#android #kotlin
#Android #kotlin
Вопрос:
У меня ошибка, на которую отвечает так много людей, но все же я чувствую, что моя проблема немного уникальна.
Проблема в том, что я нажимаю на изображение прямо с камеры и преобразую это изображение в растровое изображение, используя приведенную ниже строку кода.Эта строка кода выполняется при запуске.
val bitmap: Bitmap = BitmapFactory.decodeFile(photoPath)
Как я получаю этот фотопуть, объясняется ниже
private val photoPath: String? by lazy {
arguments?.getString(ARG_PHOTO_PATH)
}
Как я получаю ARG_PHOTO_PATH объясняется ниже
companion object {
const val ARG_PHOTO_PATH: String = "ARG_PHOTO_PATH"
fun newInstance(photoPath: String): DisplayMyFragment {
val args = Bundle()
args.putString(ARG_PHOTO_PATH, photoPath)
val fragment = DisplayMyFragment ()
fragment.arguments = args
return fragment
}
}
Пока здесь все нормально, нет проблем с вышеупомянутым кодом, проблема получения нулевого значения для растрового изображения связана с какой-то конкретной ссылкой на устройство Samsung galaxy OS версии 7
PhotoPath выглядит так —
/storage/emulated/0/Android/data/com.myappname.test/files/Pictures/jpg_20201015_131118_8335683392171736788.jpg
Итак, моя проблема в том, почему некоторые устройства возвращают bitmap null при преобразовании моего изображения в bitmap и почему другие устройства работают нормально и возвращают bitmap?
Связано ли это с размером изображения, если да, я не получаю никаких журналов исключений из памяти в моей трассировке стека.
Поэтому я не уверен, что это проблема с памятью.
Трассировка стека
Caused by java.lang.IllegalStateException
BitmapFactory.decodeFile(photoPath) must not be null
com.myappname.test.DisplayMyFragment.onStart (DisplayMyFragment.kt:62)
androidx.fragment.app.Fragment.performStart (Fragment.java:2730)
androidx.fragment.app.FragmentStateManager.start (FragmentStateManager.java:365)
androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1194)
androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1356)
androidx.fragment.app.FragmentManager.moveFragmentToExpectedState (FragmentManager.java:1434)
androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1497)
androidx.fragment.app.BackStackRecord.executeOps (BackStackRecord.java:447)
androidx.fragment.app.FragmentManager.executeOps (FragmentManager.java:2169)
androidx.fragment.app.FragmentManager.executeOpsTogether (FragmentManager.java:1992)
androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute (FragmentManager.java:1947)
androidx.fragment.app.FragmentManager.execPendingActions (FragmentManager.java:1849)
androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:2629)
androidx.fragment.app.FragmentManager.dispatchResume (FragmentManager.java:2589)
androidx.fragment.app.FragmentController.dispatchResume (FragmentController.java:269)
androidx.fragment.app.FragmentActivity.onResumeFragments (FragmentActivity.java:478)
androidx.fragment.app.FragmentActivity.onPostResume (FragmentActivity.java:467)
androidx.appcompat.app.AppCompatActivity.onPostResume (AppCompatActivity.java:195)
android.app.Activity.performResume (Activity.java:7112)
android.app.ActivityThread.performResumeActivity (ActivityThread.java:3768)
android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3832)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2994)
android.app.ActivityThread.handleRelaunchActivity (ActivityThread.java:4915)
android.app.ActivityThread.-wrap21 (ActivityThread.java)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1637)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:154)
android.app.ActivityThread.main (ActivityThread.java:6682)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)
Спасибо.
Комментарии:
1. Неясно, является ли полученное растровое изображение нулевым или что-то еще. Когда выдается значение null? С помощью какого оператора? Опубликовать трассировку стека.
2. @blackapps добавлена трассировка стека
3. @blackapps null возвращается BitmapFactory.decodeFile(photoPath) проверка этого кода на нулевой путь к фото уже существует, поэтому нет проблем с photoPath, который имеет значение.
4. Таким образом, ваше растровое изображение просто равно нулю. Тогда почему вы говорите, что выдается значение null? Даже устройство выдает null? decodeFile просто вернул значение null.
5. Да, растровое изображение равно нулю, я буду обновлять описание @blackapps