android kotlin安卓 Fragment

本文讨论了在《第一行代码Android第三版》第228页中遇到的问题,即如何正确初始化`NewsContentFragment`,并强调了在`onCreate`中使用`findFragmentById`时加上`asNewsContentFragment`的重要性,否则会报错。
val newsContentFrag: NewsContentFragment? = supportFragmentManager.findFragmentById(R.id.newsContentFrag) as NewsContentFragment?

在《第一行代码Android第三版》第228页中。

从上往下(当然也是这页的唯一一个override)第一个override fun onCreate中

if下的val fragment = newsContentFrag as NewsContentFragment

由于一些原因,需要定义。

即:

val newsContentFrag: NewsContentFragment? = supportFragmentManager.findFragmentById(R.id.newsContentFrag) as NewsContentFragment?

 不加后面的as ....竟然还会报错。

### Android KotlinFragment 切换的最佳实践 在 Android 应用开发中,使用 Kotlin 实现 Fragment 之间的切换是一项常见需求。为了确保最佳性能和用户体验,在实现过程中应遵循一定的设计模式和技术要点。 #### 使用 ViewModel 和 Navigation 组件简化管理 推荐采用 Jetpack 的 `ViewModel` 来保存状态数据以及处理业务逻辑,这样可以保证即使配置发生变化(如屏幕旋转),这些信息也不会丢失。同时利用官方提供的导航架构组件来定义页面间的转换关系,这不仅使代码更加简洁易读,而且有助于构建更直观的应用程序结构[^2]。 #### 动态替换而非静态嵌套 对于动态加载的 Fragments,应该通过编程方式将其添加到容器视图内而不是直接在布局文件里声明子 Fragment。这样做可以让开发者更好地控制何时显示哪个片段,并且方便地移除不再需要的部分。 #### 示例代码展示 下面是一个简单的例子,展示了如何在一个 Activity 或者 Parent Fragment 内部完成两个或更多个 Child Fragment 的平滑过渡: ```kotlin // 假设当前处于某个ParentFragment内部 fun changePage(fragmentIndex: Int) { // 获取FragmentManager实例 val childFragmentManager = this.childFragmentManager // 开启事务 val transaction = childFragmentManager.beginTransaction() // 找到目标Fragment并设置tag以便后续查找 var targetFragment : Fragment? = null when (fragmentIndex){ 0 -> targetFragment = FirstChildFragment.newInstance() 1 -> targetFragment = SecondChildFragment.newInstance() else -> throw IllegalArgumentException("Invalid index") } // 如果已经存在则重用已有的实例 if(targetFragment != null && !targetFragment.isAdded()){ transaction.replace(R.id.fragment_container_view, targetFragment,"TAG_$fragmentIndex") .addToBackStack(null)// 可选操作:允许按Back键回退至上一界面 .commitNowAllowingStateLoss() // 提交更改 }else{ Log.d(TAG,"Fragment already added or creation failed.") } } ``` 此段代码实现了基于索引参数决定要显示哪一个具体的子 Fragment ,并通过调用 `replace()` 方法来进行实际的内容更新工作;另外还加入了对 BackStack 的支持以增强交互体验。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值