作者 / Yacine Rezgui 无论您是在应用中请求某项权限,从文件管理系统中选择某个文件,还是期望从第三方应用中获取到某些数据,都会涉及到在 Activity 之间传递数据,而这也正是 Android...ActivityResult API https://developer.android.google.cn/reference/kotlin/androidx/activity/result/package-summary...-> // 处理返回的 Uri } 回调 https://developer.android.google.cn/reference/kotlin/androidx/activity/result.../ActivityResultCallback GetContent() https://developer.android.google.cn/reference/kotlin/androidx/activity...正如您看到的代码片段,ActivityResult 在处理来自 Activity 的返回数据时带来了更便捷的开发体验。
Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main...{ super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) textView.text...但是需要注意的一点是,在 AndroidManifest.xml 中配置的 Activity 的全类名必须和其路径一致,否则会找不到!...method 从比较的代码中可以知道: 在 Kotlin 中默认方法的修饰符就是 public ,可以省略不写。...可变变量 var var i: Int = 1 i += 1 字符串模板 字符串可以包含模板表达式,即可求值的代码片段,并将其结果连接到字符串中。
[1240] ##Android部分 第一节 Android 四大组件相关 Activity 与 Fragment 之间常见的几种通信方式?...Activity中onNewIntent方法的调用时机和使用场景? Intent传输数据的大小有限制吗?如何解决?...试从源码角度分析Handler的post和sendMessage方法的区别和应用场景? 第三节 Android UI 绘制相关 谈谈Android的事件分发机制? 谈谈自定义View的流程?...你是如何将其应用于具体项目中的? 第九节 数据结构方面 什么是冒泡排序?如何优化? 什么是红黑树?为什么要用红黑树? 第十节 设计模式 什么是代理模式?如何使用?Android源码中的代理模式?...第十二节 Kotlin方面 请简述一下什么是 Kotlin?它有哪些特性? [1240] Kotlin 中注解 @JvmOverloads 的作用? 在Kotlin中,何为解构?该如何使用?
前言 今天复习下kotlin相关的知识点和常考考点,通过这些问答相信你也能更一步了解Kotlin。...扩展函数比如: fun Activity.showToast( msgId:Int){ Toast.makeText(this,msgId,Toast.LENGTH_SHORT).show()...} 这样任何的Activity里面就可以直接调用showToast方法来展示Toast了。...kotlin中,对于$符号表示 串模板,就是可计算的代码片段,可以将其计算结果链接到字符串中。...扩展函数和使用代码所对应的java代码: //扩展函数 public final class UtilsKt { public static final void showToast(@NotNull Activity
我在kotlin的协程使用过程中,其实发现了很多rxjava和协程之间很相似的地方。 如果把两个东西孤立起来学习,我觉得成本太高了。...ObservableEmitter 和 suspendCoroutine ObservableEmitter 想象一个水龙头和水流,这个管道就相当于Observable,从里面能放出水,ObservableEmitter...我至今没有碰到过任何关于背压的问题,有碰到朋友可以留言交流下 先说业务场景,有个页面要处理onActivityResult方法,但是我只有context实例,如果从activity一层层传递下来我又不开心...这个地方只是随手写的啊,可能会有bug的 suspendCoroutine 挂起函数 在异步编程中,回调是非常常见的写法,那么如何将回调转换为协程中的挂起函数呢?...而kotlin协程的写法起码看起来更像是顺序执行,可读性和可维护性其实对后续来说会更好一点。 如果各位觉得有帮助请帮忙转发点赞,辣鸡作者先赚点知名度。
从 95% 降低到 Java 85%, 而 Kotlin 从 5% 涨到 15% ,如下图所示 ?...Fragment被remove后,Fragment的生命周期会一直执行完onDetach,之后Fragment的实例也会从FragmentManager中移除。...当Fragment被detach后,执行attach操作,会让Fragment从onCreateView开始执行,一直执行到onResume。attach无法像add一样单独使用,单独使用会抛异常。...此片段在双窗格模式 (在平板电脑上) 包含在 ItemListActivity 中,在手机上则是包含在ItemDetailActivity中。...Fragment 从后退栈中一次弹出。
任务Runnable定义了一个可以独立运行的代码片段,通常用于界面控件的延迟处理,比如有时为了避免同时占用某种资源造成冲突,有时则是为了反复间隔刷新界面从而产生动画效果。... tv_result.text = "当前计数值为:$count" handler.postDelayed(this, 1000) } } 然后在Activity...此时的声明代码便从内部类方式变成了匿名内部类方式,采取Kotlin编码的话注意使用关键字object占位,表示这是一个匿名内部类,完整的Kotlin代码如下所示: private val counter... handler.post(counter) 不过这种写法去掉run方法是有代价的,虽然表面上代码变得简洁,但是并不拥有类的完整结构,其内部的this关键字不再表示任务类自身,而是表示宿主类即Activity...点此查看Kotlin入门教程的完整目录
在构造器中传入布局 ID 从 AndroidX AppCompat 1.1.0 和 Fragment 1.1.0 ( 译者注:AppCompat 包含 Fragment,且 Fragment 包含 Activity...但是,从 AndroidX Activity 1.0.0 开始,您可以使用 OnBackPressedDispatcher 在您可以访问该 Activity 的代码的任何位置(例如,在 Fragment...从 AndroidX SavedState 1.0.0(它是 AndroidX Activity 和 AndroidX Fragment 内部的依赖。...很高兴看到 -ktx AndroidX 软件包中提供了许多有用的 Kotlin 扩展方法,并且定期添加了新的方法。...例如,在AndroidX Fragment-KTX 1.2.0 中,使用片段化类型的扩展名可用于 FragmentTransaction 上的 replace() 方法。
由于访问网络需要在分线程进行,因此接口访问代码必须放在doAsync代码块中,下面给出根据经纬度获取详细地址的Kotlin代码片段: private val mapsUrl = "http://...= null) { doAsync { //根据经纬度数据从谷歌地图获取详细地址信息 val url = MessageFormat.format...如果使用Java代码实现该功能,首先HTTP调用就得提供底层的接口访问代码,其次分线程请求网络又得专门写个继承自AsyncTask的任务处理代码,末了Activity这边厢还得实现该任务的完成事件,真是兴师动众...{ super.onCreate(savedInstanceState) setContentView(R.layout.activity_http_image) ... iv_image_code.setImageBitmap(bitmap) iv_image_code.isEnabled = true } } 看到了吧,即使是完整的Activity
近两年谷歌对Kotlin的支持,我们开始使用 Android Kotlin extensions。在文件中导入布局文件直接引用viewId。无需做其他额外操作,最为方便。...分析 本文主要从以下方面对ViewBinding进行分析: 使用能解决什么问题; 使用流程; 与之前方法的比较; 原理; 1.使用能解决什么问题 顾名思义ViewBinding的意思就是如何将view与代码绑定在一起...所以其主要解决如何安全优雅地从代码中引用到XML layout文件中的view控件的问题。直到目前为止,Android构建用户界面的主流方式仍然是使用XML格式的layout文件。...通过Activity的 setContentView()方法可以为Activity设置内容。...的话还可以使用Kotlin Android Extensions。
以下是一个完整的例子,展示了如何在 DialogFragment 中隐藏系统导航栏(使用 Kotlin): import android.os.Bundle import android.view.View...ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT ) } } 在这个示例中: onCreateView: 从...-- Your layout content goes here --> 使用 DialogFragment 要显示这个 DialogFragment,可以在活动或其他片段中调用以下代码...{ super.onCreate(savedInstanceState) setContentView(R.layout.activity_main)...let { … }: 为了确保 window 不为 null,使用 Kotlin 的安全调用操作符 ?. 来使用窗口对象。 setLayout 方法将对话框设置为全屏。
Activity 活动跳转(Java&Kotlin) 任何正式APP都不可能只有一个Activity,当有多个Activity时,怎么从一个Activity进入到另一个Activity呢?...① 普通跳转 顾名思义,就是单纯从A到B,不带任何内容。...)); 如果把刚才Java里的代码复制到Kotlin里,会需要转译,转译后的Kotlin代码如下: Kotlin //活动跳转,从MainActivity跳转到TestActivity,普通跳转...//TestActivity 为要跳转的页面 startActivity() 就这么简单,不管是从代码上还是从意思上都比Java要简洁明了,要这样使用的话你的Kotlin...FLAG_ACTIVITY_NEW_TASK 使用,即setFlags的参数为“Intent.FLAG_ACTIVITY_CLEAR_TASK 启动模式在Java中是比较琐碎的,在Kotlin中则通过
点我(https://developer.android.com/kotlin/get-started.html) 先进 简洁 安全。 在语法表现上,Kotlin够简洁明了。...{ super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // No...Kotlin是一种与Java完全可互操作的JVM语言。...在将Java代码粘贴到Kotlin文件时,可以转换整个Java文件或转换一段代码片段。很稳! ? Kotlin 是开放的 与Android一样,Kotlin是Apache 2.0下的一个开源项目。...kotlin 语言的发展。
Koin 是什么 Koin 是为 Kotlin 开发者提供的一个实用型轻量级依赖注入框架,采用纯 Kotlin 语言编写而成,仅使用功能解析,无代理、无代码生成、无反射。...super.onCreate(savedInstanceState) //... } } 该by inject()功能使我们能够在Android组件运行时(活动,片段...主要还是有内联函数inline,才使得kotlin能够直接通过泛型就能拿到泛型的类型,只有内联函数的类型参数可以具体化。...例子 定义实现一个扩展函数启动 Activity,一般都需要传 Class 参数: // Function private fun Activity> Activity.startActivity...> Activity.startActivity(context: Context) { startActivity(Intent(context, T::class.java)) } //
实际上,如果要将现有 Android 应用转换为使用片段,可能只需将代码从 Activity 的回调方法移入片段相应的回调方法中。...管理Fragment 如要管理 Activity 中的片段,需使用 FragmentManager。如要获取它,请从 Activity 调用 getSupportFragmentManager()。...例如,以下示例说明如何将一个片段替换为另一个片段,以及如何在返回栈中保留先前的状态: // Create new fragment and transaction Fragment newFragment...然后,FragmentActivity 会自动通过 onBackPressed() 从返回栈检索片段。...从手机到平板电脑。 Fragment 是一个独立的模块,紧紧地与 activity 绑定在一起。可以运行中动态地移除、加入、交换等。
} 注意: 尽管协程库中同样包含了不可取消版本的协程构建器 (即 suspendCoroutine),但最好始终选择使用 suspendCancellableCoroutine 处理协程作用域的取消及从底层...您可以通过我在下面代码片段 (原版实现) 中的注释来了解发生了什么: public suspend inline fun suspendCancellableCoroutine( crossinline...流数据 如果我们转而希望用户的设备在真实的环境中移动时,周期性地接收位置更新 (使用 requestLocationUpdates 函数),我们就需要使用 Flow 来创建数据流。...您可以通过我在以下代码片段中的注释 (查看 原始实现) 一窥究竟: public suspend fun ProducerScope.awaitClose(block: () -> Unit =...您可以通过 codelab: 创建 Kotlin 扩展库,来上手本文所介绍的话题。
本文是从 Haskell 版 Functors, Applicatives, And Monads In Pictures 翻译而来的 Kotlin 版。...与从 Swift 版翻译而来的 Kotlin 版不同的是,本文是直接从 Haskell 版原文翻译而来的。 这是一个简单的值: ? 我们也知道如何将一个函数应用到这个值上: ? 这很简单。...fmap 知道如何将函数应用到包装在上下文中的值上。 例如,你想将 {it + 3} 应用到 Just(2)上。...如何将一个接受两个参数的函数应用到两个已包装的值上?...这是它(在 Haskell 中)的定义的片段: class Monad m where (>>=) :: m a -> (a -> m b) -> m b 其中 >>= 是: ?
(30, "bennyhuo", title = "Kotlin Developer") 这些方便快捷的方法帮我们处理了 Intent 传递参数的过程,当然,我们也在运行时对 Activity 的声明周期进行了监听...SharedElement 元素动画 从 Android 5.0 开始,系统在 Activity、Fragment、View 之间支持了共享元素动画,但接口使用起来略显复杂,因此我们通过对 Activity...的实例因各种原因(例如开发者选项中的”不保留活动“开启时)被销毁,从 EditUserActivity 返回时, UserActivity 被重新创建,导致之间的回调(匿名内部类、Lambda 表达式...尽管从理论的角度,这个更新实例的方法较为可靠,但毕竟这个功能比较 Tricky,如果大家在使用过程中发现回调调用之后没有反应,那么请开 Issue 一起讨论解决方案。...OPTIONAL_company = "company"; public static final String OPTIONAL_title = "title"; ... } Fragment 支持 由于从
Scenario 为了用代码片段进行演示,我们想象一下,构建一个社交网络应用中的界面UI,它显示了一个用户的简介以及该用户的关注者数量。...ProfileController反过来使用ProfileRepository来获取数据,无论是从网络(使用先前在Activity中使用的WebService)还是从其他地方(如内存缓存或持久化)。...同时,我们开始遇到其他依赖关系的问题,我们需要弄清楚如何将它们和参数一起传入工厂,从而产生更多的模板。...因此,处理这种需求的最好方法是不使用LiveData作为生产者,而是使用RX类型或Kotlin,因为Kotlin支持多种高阶函数以及对Collections和Sequence的扩展。...下面是一些例子,说明在Kotlin中使用高阶函数可以避免多少模板。
领取专属 10元无门槛券
手把手带您无忧上云