ImagePicker在安卓上对图片的应用一例

简介: 偷得浮生半日闲,早上在逛StackOverflow的时候发现有人求助,提到了一个不怎么火的ImagePicker库:

前言

偷得浮生半日闲,早上在逛StackOverflow的时候发现有人求助,提到了一个不怎么火的ImagePicker库:


网络异常,图片无法展示
|


心想这个库说不定是什么好东西,说不定有所收获,于是我就继续观望了下去。

正篇

来龙去脉

看完问题后,我便按着链接寻了过去,看了半天感觉是比ImagePicker多一些方便的地方。但帖子的问题其实还是和ImagePicker有关。


网络异常,图片无法展示
|


问题的关键:In my application I want use this library for ImagePicker : But after add this line private val imagePicker: ImagePicker = registerImagePicker(this) show me Force close.

即在它的应用中添加了一行关于ImagePicker的代码后就直接导致应用强制关闭。

一看到强制关闭,我第一反应就是空指针或者尚未初始化便调用。

然后我就看了一下答案,有两个回答,其实意思都差不多,不过是给出了两个方案。

解决方法

方法1:回答的人第一句就点名了原因:The reason is is calling to get the Context.


网络异常,图片无法展示
|


并且给出了原因与示例:

fun Fragment.registerImagePicker(callback: ImagePickerResultListener): ImagePicker {
        return ImagePicker(callback, requireActivity())
    }
class FragmentB : Fragment(), ImagePickerResultListener {
private lateinit var imagePicker: ImagePicker
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    imagePicker = registerImagePicker(this)
}
}

我是用Java写安卓的,所以这几行代码我也不大清晰,但结合回复者语义,应该是让寻助者把这行出错代码转移到fragment lifecycle.onViewCreated()中,放到这里面去初始化。 而答案2:可能是过于简洁,提问的人没有认可该答案


网络异常,图片无法展示
|


回答的人也说明是context为正确获取,让他将this改成对应activityfragment的上下文:

private val imagePicker: ImagePicker = registerImagePicker(requireActivity)
private val imagePicker: ImagePicker = registerImagePicker(requireContext)

这个回答的确不如上一个,没有具体到方法中的原因。

小结

工作中有时候会很忙,但同样收获很多,而难得闲下来通过看博客和问答社区提升自己也是极好的,我们要抓住这些日常的小细节记录下来,这样才能再往后回忆知识时不产生既视感!

相关文章
|
7天前
|
XML Java Android开发
探索Android开发之旅:打造你的第一个应用
【9月更文挑战第4天】在这篇专为初学者设计的文章中,我们将一起踏上激动人心的Android开发之旅。从设置开发环境到实现一个简单的“Hello World”应用,每一步都充满了发现和学习。文章将引导你理解Android开发的基础知识,并鼓励你动手实践。让我们开始吧,创造你的第一款Android应用,开启技术世界的新篇章!
|
9天前
|
存储 缓存 搜索推荐
打造个性化天气应用:Android 平台上的天气预报小助手
【9月更文挑战第2天】在这篇文章中,我们将一起探索如何从零开始构建一个简单却功能强大的天气应用。通过这个指南,你将学会如何在 Android 平台上使用 Java 编程语言和相关 API 来创建你自己的天气预报小助手。文章不仅提供了代码示例,还深入讨论了设计思路、用户界面优化以及数据管理等关键方面,旨在帮助初学者理解并实现一个完整的应用项目。
|
11天前
|
搜索推荐 IDE 开发工具
打造个性化安卓应用:从零开始的Flutter之旅
在数字时代的浪潮中,拥有一款个性化且高效的移动应用已成为许多创业者和企业的梦想。本文将引导你使用Flutter框架,从零基础开始构建一个安卓应用,不仅涉及界面设计、功能实现,还包括性能优化的关键技巧。通过简洁易懂的语言和实用的代码示例,我们将一起探索如何让你的应用在众多竞争者中脱颖而出。 【8月更文挑战第31天】
|
11天前
|
存储 开发工具 Android开发
打造你的专属安卓应用:从零开始的Flutter之旅
【8月更文挑战第31天】在数字时代的浪潮中,拥有一款属于自己的应用不仅是梦想的启航,也是技术实力的展现。本文将引导你使用Flutter框架,轻松步入安卓应用的开发世界。无论你是编程新手还是希望拓展技能边界的开发者,跟随这篇指南,你将学会如何搭建开发环境、设计用户界面,并实现基本功能。让我们一起探索代码的力量,开启一段创造之旅吧!
|
11天前
|
移动开发 搜索推荐 开发工具
打造个性化安卓应用:从零开始的Flutter之旅
【8月更文挑战第31天】探索Flutter,一个革命性的UI工具包,它让开发者能够使用一套代码库构建美观、快速的原生应用。本篇文章将带你领略Flutter的魅力,通过实际示例揭示如何快速搭建一个安卓应用。无论你是新手还是有经验的开发者,这篇文章都将为你提供价值。
|
12天前
|
Android开发 UED 开发者
探索安卓应用的生命周期管理
【8月更文挑战第31天】在开发安卓应用时,理解并妥善处理应用的生命周期是至关重要的。本文将通过浅显易懂的方式,带你了解安卓应用的生命周期,并通过代码示例展示如何在实际应用中进行有效的生命周期管理。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技巧。
|
3天前
|
开发工具 Android开发 iOS开发
探索安卓与iOS开发的差异:构建未来应用的关键考量
在数字时代的浪潮中,安卓和iOS这两大操作系统如同双子星座般耀眼夺目,引领着移动应用的潮流。它们各自拥有独特的魅力和深厚的用户基础,为开发者提供了广阔的舞台。然而,正如每枚硬币都有两面,安卓与iOS在开发过程中也展现出了截然不同的特性。本文将深入剖析这两者在开发环境、编程语言、用户体验设计等方面的显著差异,并探讨如何根据目标受众和项目需求做出明智的选择。无论你是初涉移动应用开发的新手,还是寻求拓展技能边界的资深开发者,这篇文章都将为你提供宝贵的见解和实用的建议,帮助你在安卓与iOS的开发之路上更加从容自信地前行。
|
11天前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
61 0
|
11天前
|
开发框架 Dart 搜索推荐
打造个性化安卓应用:从零开始的Flutter之旅
【8月更文挑战第31天】在数字化浪潮中,拥有一款个性化的移动应用是许多人的梦想。本文将引导你使用Flutter框架,快速入门安卓应用开发。我们会一起探索Flutter的基础概念,并通过一个简单的计数器应用示例,展示如何实现交互式界面。无论你是编程新手还是希望扩展技能边界的开发者,这篇文章都将为你开启一扇新窗,让你看到用代码创造美丽事物的无限可能。