在把java代码转换成kotlin的过程中,发现kotlin的一些代码逻辑和java不同。在Fragment的ViewHolder,onCreateViewHolder中,java可以通过getFragementManager().findFragmentById()来获取某一个Fragment实例。但是这个方法在kotlin中无效,根本就调用不了这个方法。
那么怎么获得这个实例呢,只能通过创建一个全局变量,然后在onActivityCreated()中创建实例。最后再在ViewHolder中调用。
具体代码如下:
先声明全局变量:
companion object { private const val TAG = "NewsTitleFragment" var twoPaneFragment : NewsContentFragment? = null }
然后在Fragment中创建实例:
override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) isTwoPane = news_content_layout != null twoPaneFragment = news_content_fragment as NewsContentFragment? }
最后ViewHolder就可以获得这个实例了:
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): NewsAdapter.ViewHolder { Log.d(TAG, "Into NewsAdapter onCreateViewHolder") val view = LayoutInflater.from(parent?.context).inflate(R.layout.news_item, parent, false) val holder = ViewHolder(view) view.onClick { var news = newsList[holder.adapterPosition] if (isTwoPane) { val newsContentFragment = twoPaneFragment newsContentFragment?.refresh(news.title, news.content) } else { println("isTwoPane false") NewContentActivity().actionStart(news.title, news.content) } } return holder }
相关推荐
在这个“kotlin实现fragment绑定tablayout”的示例中,我们将探讨如何使用Kotlin优雅地实现这一功能。 首先,我们需要理解TabLayout的基本用法。TabLayout通常会放置在Activity的布局XML文件中,通过设置tabs来定义...
- Kotlin的委托允许我们将实现细节委托给其他对象,如在Fragment中使用`onCreateView`的委托,可以减少重复代码。 通过以上这些Kotlin特性,我们可以构建出更加模块化、可重用的Activity和Fragment,降低代码的...
在项目的build.gradle模块文件中,添加对`design`库和`fragment`库的依赖,以使用TabLayout和Fragment: ```gradle dependencies { implementation 'com.google.android.material:material:1.4.0' ...
在Android应用开发中,Fragment和Activity是两个核心组件,它们共同构建了用户界面。Fragment可以理解为Activity的一部分,可以独立存在,也可以嵌入到Activity中,增强了UI的灵活性。本篇将深入探讨Fragment与...
今天在写导航栏子页面跳转时候死活无法跳转,错误类型如图: 那么原因是我使用了 Intent 跳转页面,也就是 : override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated...
在Android开发中,Canvas是用于在屏幕上绘制2D图形的核心组件。Kotlin作为一种现代、简洁的编程语言,已经成为Android开发...在项目"Kanvas-master"中,你可能找到更多关于如何在Kotlin中优化Canvas使用的示例和实践。
若需传递数据,可以在Intent中使用`putExtra()`方法添加键值对。 3. **布局控件的获取**: 在Android中,布局通常定义在XML文件中。Kotlin的Android扩展库提供了便捷的方法来直接在代码中获取这些控件,如`...
执行`Gradle Sync`后,你就可以在Kotlin代码中使用GreenDao库了。 二、创建实体类 在GreenDao中,数据库表对应于Kotlin的实体类。例如,假设我们有一个`User`实体,可以这样定义: ```kotlin @Entity data class ...
本"Android Kotlin学习简单使用Demo"旨在通过实际的项目案例,帮助开发者快速掌握Kotlin在Android应用中的基本应用,包括viewpager、tablayout、fragment以及XUtils网络请求的集成。 首先,我们来看`viewpager+...
在Kotlin与Java的互操作性方面,文档阐述了如何在Kotlin中调用Java代码,反之亦然,使得现有Java项目能平滑地过渡到Kotlin。 对于JavaScript开发者,Kotlin/JS提供了一种用Kotlin编写前端应用的方式,支持React框架...
在Android开发中,Kotlin与Java的互操作性是其一大优点。原有的Java代码可以无缝集成到Kotlin项目中,而Kotlin代码也可以调用Java库,这对于大型项目尤其有用。此外,Kotlin的扩展函数和属性可以为现有的类添加功能...
3. **在Activity中添加Fragment**:在Activity的布局文件中,使用<fragment>标签或者在代码中动态添加Fragment。例如,在`activity_main.xml`中: ```xml xmlns:android=...
本篇文章将深入探讨如何使用Kotlin在Android中实现进度条,并结合具体代码实例来解析`MyProgressBar`这个项目。 首先,我们需要在布局文件(如activity_main.xml)中定义一个ProgressBar。进度条有两种主要类型:...
接着,在Kotlin的MainActivity中,我们需要初始化BottomNavigationView,并设置监听器以便在用户点击时切换Fragment: ```kotlin class MainActivity : AppCompatActivity() { private lateinit var bottom...
Kotlin是一种运行在Java虚拟机(JVM)上的编程语言,由JetBrains公司开发,旨在解决实际开发中遇到的常见问题。Kotlin不仅适合用于服务器端开发,也被广泛应用于Android应用程序开发和JavaScript应用中。其特性包括...
Kotlin的惯用法指的是在Kotlin编程中的一些约定俗成的编程风格或技巧,比如使用扩展函数来增强已有的类库功能,利用Lambda表达式来实现回调机制等。 编码规约部分则提供了编写高质量、可维护代码的建议,如使用有...
在这个以 Kotlin 编写的 Lottie 使用 demo 中,我们将深入探讨如何在 Android 应用程序中集成并使用 Lottie 动画。 首先,我们需要在项目中添加 Lottie 的依赖。在 `build.gradle`(Module: app)文件中,添加以下...
《Kotlin学习书籍(中文)》是一套专为中文学习者设计的教程,旨在帮助开发者深入理解和掌握Kotlin编程语言,特别是其在Android开发中的应用。这套资源包含了两本PDF电子书:《Kotlin in Chinese》和《Kotlin for ...
10. 循环和条件语句(Loops and conditionals):在Kotlin中使用循环和条件判断的基本语法和高级用法。 11. 字符串模板(String templates):Kotlin允许在字符串中直接嵌入表达式来格式化输出。 12. 接口...
在本书中,你将学习如何设置Kotlin开发环境,理解变量、控制流、类和对象等基本概念,然后逐步深入到函数式编程、协程(用于解决异步编程问题)以及Android特定的开发实践。书中还会介绍如何利用Kotlin的特性来提升...