首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【Jetpack】Navigation 导航组件 ④ ( Fragment 跳转中使用 safe args 安全传递参数 )

导航路线走 navController.navigate(R.id.action_fragmentA_to_fragmentB, args) 最后 , 在跳转后界面中 , 调用 getArguments...Make " 选项 , 重新编译一下, 目的是为了 生成 FragmentBArgs.java 代码, 之后调用该自动生成类 进行 传参 ; 生成类在 " Navigation\app\build\...和 setAGE 分别设置 参数 , 再后 , 调用 FragmentBArgs.Builder#build() 函数 , 创建 FragmentBArgs 类型 参数对象 , 最后 , 调用 FragmentBArgs...NavigationGraph ; I、MainActivity 页面布局 这是 主页面 Launcher Activity 布局 , 之后 Fragment 布局 就替换到 fragment...:defaultValue="12"/> 3、页面相关 Kotlin 代码 主要是 Activity 和 Fragment 代码 ; I、MainActivity

41120

kotlin-android-extensions插件也被废弃了?扶我起来

kotlin-android-extensions插件可能算得上是我最喜欢一个KotlinAndroid特性了。...还有,虽然HashMap是一种O(1)时间复杂度数据结构,但这毕竟只是理论上时间复杂度,实际调用肯定是没有直接访问控件实例快,因此kotlin-android-extensions插件也在无形当中降低了程序运行效率...首先最核心逻辑仍然是调用FragmentMainBindinginflate()函数去加载fragment_main.xml布局文件,但由于这是在Fragment当中,所以使用了3个参数inflate...好吧,这是我少有承认Java要比Kotlin更简洁地方,因为使用Java代码去实现同样功能只需要这样写: public class MainFragment extends Fragment {...首先,我们在onCreateViewHolder()函数中调用FruitItemBindinginflate()函数去加载fruit_item.xml布局文件,这和ViewBinding在Fragment

2.7K31

知识点 | ViewModel 四种集成方式

在 Activity 或 Fragment onCreate 方法中,将 ViewModelProvider 调用修改为: //下面的 Kotlin 扩展需要依赖以下或更新新版本 ktx 库:...您可以用 Activity 创建一个 ViewModel 实例,然后从这个 Activity 中任一个 Fragment 中获得 ViewModel 引用: // 在Fragment onCreate...ViewMode 与 Kotlin 协程: viewModelScope 于 Lifecycle 2.1.0 版本时加入 只支持 Kotlin Android 平台上协程 通常情况下,我们使用回调...Kotlin 协程 (Coroutines) 同样适用于处理异步调用,它让逻辑变得简单同时,也确保了操作不会阻塞主线程。...viewModelScope 是一个 ViewModel Kotlin 扩展属性。正如前面所说,它能在 ViewModel 销毁时 (onCleared() 方法调用时) 退出。

2.5K20

Kotlin干掉了findViewById,但用不好也会有性能问题

序 自从 Google 宣布 KotlinAndroid 一等公民身份后,大量 Android 开发开始接触和使用 Kotlin,也体会到 Kotlin 在编码过程中便捷和高效。...本文就这个问题,展开讨论 Kotlin 通过 View ID 访问 View 原理,以及频繁调用 findViewById() 问题。 二....Kotlin 干掉了 findViewById 2.1 如何使用? 想使用这个特性,还需要一些简单配置,不过在 Android Studio 中,我们支持 Kotlin 时候就已经自动配置完成。...apply plugin:'kotlin-android-extensions' 之后在访问 Activity 或者 Fragment 中,还需要对布局进行 import,通常我们在首次使用该布局下...这一步,也不需要显式调用 findViewById()。 这有什么用呢? 例如在 Fragment onCreateView() 中,一定不能操作布局内控件吗?

2.6K10

知识点 | ViewModel 四种集成方式

在 Activity 或 Fragment onCreate 方法中,将 ViewModelProvider 调用修改为: //下面的 Kotlin 扩展需要依赖以下或更新新版本 ktx 库:...您可以用 Activity 创建一个 ViewModel 实例,然后从这个 Activity 中任一个 Fragment 中获得 ViewModel 引用: // 在Fragment onCreate...ViewMode 与 Kotlin 协程: viewModelScope 于 Lifecycle 2.1.0 版本时加入 只支持 Kotlin Android 平台上协程 通常情况下,我们使用回调...Kotlin 协程 (Coroutines) 同样适用于处理异步调用,它让逻辑变得简单同时,也确保了操作不会阻塞主线程。...viewModelScope 是一个 ViewModel Kotlin 扩展属性。正如前面所说,它能在 ViewModel 销毁时 (onCleared() 方法调用时) 退出。

24220

Android | Jetpack 处理回退事件新姿势 —— OnBackPressedDispatcher

iterator.next().isEnabled()) { return true; } } return false; } 入口方法:责任链上每个回调方法仅在前面的回调处于启用状态...首先,在 Fragment attach 时,会创建一个回调对象加入分发器,回调处理时弹出返回栈栈顶事务。不过初始状态是启用,只有当事务添加进返回栈后,才会修改回调对象为启用状态。...一般情况下,“调用 moveTaskToBack()” 表现最佳,两个论点: 1、两次点击返回键目的是挽回用户,确认用户真的需要退出。...因为这些 API 表现并不理想: 1、当调用 Activity 不位于栈顶时,杀死进程系统会立即重新启动 App(可能是系统认为 前台 App 是意外终止,会自动重启); 2、当 App 退出后,...这里其实是使用了 ViewBinding + Kotlin 委托属性视图绑定方案,相对于传统 findViewById、ButterKnife、Kotlin Synthetics 等方案,这个方案从多个角度上表现更好

1.4K20

Android面试大纲(集合)

Fragment进行回收,适合页面较多Fragment使用,这样就不会消耗更多内存 4、Fragment生命周期 onAttach() onCreate() onCreateView() onActivityCreated...调用Activity中方法:getActivity Activity调用Fragment方法:接口回调 Fragment调用Fragment方法:FragmentManager.findFragmentById...资源关闭造成内存泄漏:比如Socket、Broadcast、Cursor、Bitmap、ListView等,使用完后要关闭 AsyncTask造成内存泄漏:由于非静态内部类持有匿名内部类引用而造成内存泄漏...(“UnusedResources”)来忽视Lint报错 自定义Lint检查,可以创建类,继承Detector和实现JavaPsiScanner 26 Kotlin面试题 1、什么是Kotlin Kotlin...是一种基于JVM编程语言 对Java一种拓展,比Java更简洁 Kotlin支持函数式编程 Kotlin类和Java类可以相互调用 2、Kotlin环境搭建 直接在Plugin中下载Kotlin插件即可

1.1K20

viewBinding使用(记一次重构项目的过程)

kotlin 那个扩展,其实刚开始做项目的时候这个就已经废弃了,由于当时自己有点懒,没去学习这个新代替方案,所以就成为一个历史遗留问题,参考官方文档 view Binding 官方文档,这里只是针对目前使用几个场景进行重构...,其他涉及场景可以同理得出。...二、环境配置 Android Studio 版本至少需要3.6及以上 在build.gradle 配置文件下添加以下语句,不过现在版本貌似是默认启用view Binding android {...//生成类名 FragmentNameBinding binding自动调用布局里面的id也发生了一些变化,变成驼峰命名法,同样会忽略掉非字母字符,举个例子 //布局里面某个控件id android...,跟上面几种情况类似就不过多说明了 四、总结 总体来讲这次重构是比较成功,以前使用kotlin扩展虽然方便但是还是比较容易出错,尤其是不同布局采用相同id名时经常弄错,用了view binding

73910

使用Kotlin高效地开发Android App(五)完结篇总结

封装Extras 使用ExtrasDelegate来封装Extras import android.support.v4.app.Fragment import android.support.v7.app.AppCompatActivity...函数,在使用Kotlin高效地开发Android App(二)中已经讲述过,就不在重复讲述。...三. infix 中缀表达式是一种通用算术或逻辑公式表示方法,操作符以中缀形式处于操作数中间。中缀表达式允许我们使用一个单词或字母来当运算符用(其本质还是函数调用),忽略调用点和圆括号。...即那些在函数体内会被访问变量。 内存分配(对于函数对象和类)和虚拟调用会引入运行时间开销。 使用 inline 修饰函数,可以从编译器角度将函数函数体复制到调用处实现内联。...该系列相关文章: 使用Kotlin高效地开发Android App(四) 使用Kotlin高效地开发Android App(三) 使用Kotlin高效地开发Android App(二) 使用Kotlin

80820

ViewBinding 与 Kotlin 委托双剑合璧

(含Kotlin)[5] Android | Fragment 核心原理和面试题 (AndroidX 版本)[6] ---- 学习路线图 ---- 1....不会使用类会在混淆时被压缩。 ---- 2. ViewBinding 基本用法 这一节我们来介绍 ViewBinding 使用方法,内容不多。...关于 Fragment 生命周期和事务在我之前一篇文章里讨论过:[Android | Fragment 核心原理 & 面试题 (AndroidX 版本)](notion://www.notion.so...首先,我们梳理一下我们要委托内容与需求,以及相应解决办法: 需求 解决办法 需要委托 ViewBinding#bind() 调用 反射 需要委托 binding = null 调用 监听 Fragment...Fragment#requireView() 会返回 Fragment 根节点,但要注意在 onCreateView() 之前调用 requireView() 会抛出异常; 问题 7、FragmentTestBinding

1.6K20

Android:Jetpack之视图绑定——ViewBinding

Android Jetpack 向后兼容,是为现代设计实践而设计,如关注点分离、测试能力、松散耦合、观察者模式、控制翻转、Kotlin集成等生产力特性。...语言支持; AppCompat→ 帮助较低版本Android系统进行兼容; Android KTX→ 基于Kotlin特性为Android、Jetpack提供一些简易易用扩展; Multidex→...& Transition→ 内置动画及自定义动画效果; Emoji→ 即便用户没有更新Android系统也可以获取最新表情符号; Auto(车)、TV、WearOS; Fragment→ 组件化界面的基本单位...普及,带来了扩展创建kotlin-android-extensions(KAE),直接拿id当控件用,原理: 类中定义一个存储控件引用HashMap,id为key,控件实例为value,当用到控件时,...,可以利用Kotlin高阶函数,示例如下: [df188f56cb66147dc9e77711b30e0c53.png] 调用下: [599ce694daff7a90fbcb200a702f626e.png

1.2K30

Android:Jetpack之视图绑定——ViewBinding

Android Jetpack 向后兼容,是为现代设计实践而设计,如关注点分离、测试能力、松散耦合、观察者模式、控制翻转、Kotlin集成等生产力特性。...语言支持; AppCompat→ 帮助较低版本Android系统进行兼容; Android KTX→ 基于Kotlin特性为Android、Jetpack提供一些简易易用扩展; Multidex→...& Transition→ 内置动画及自定义动画效果; Emoji→ 即便用户没有更新Android系统也可以获取最新表情符号; Auto(车)、TV、WearOS; Fragment→ 组件化界面的基本单位...普及,带来了扩展创建kotlin-android-extensions(KAE),直接拿id当控件用,原理: 类中定义一个存储控件引用HashMap,id为key,控件实例为value,当用到控件时,...,可以利用Kotlin高阶函数,示例如下: [df188f56cb66147dc9e77711b30e0c53.png] 调用下: [599ce694daff7a90fbcb200a702f626e.png

1K30

Android使用ViewBinding

基于Kotlin扩展 近几年AndroidKotlin支持,我们开始使用 Android Kotlin extensions。 在文件中导入布局文件直接引用viewId。...ViewBinding和Kotlin扩展 ViewBinding 和 Kotlin 扩展 都是 Android 开发中常用技术,用于简化视图查找和绑定过程。...Kotlin扩展: Kotlin扩展 是 Kotlin 语言特性,其通过扩展函数方式,允许开发者为现有的类添加新函数或属性。...Kotlin扩展 对视图数据获取和类型安全性没有提供直接支持,需要手动处理可能空指针异常和类型转换。 Kotlin扩展 会增加 APK 大小,因为它是在运行时动态添加函数。...总体而言 ViewBinding 在类型安全性和编译时错误检测方面比 Kotlin扩展 更好。 它是官方推荐方式,并且可以避免一些潜在运行时异常。

44521
领券