带有片段的 Kotlin
Posted
技术标签:
【中文标题】带有片段的 Kotlin【英文标题】:Kotlin with Fragments 【发布时间】:2018-01-04 06:07:38 【问题描述】: var bundle : Bundle ? =null
bundle?.putString("text",text)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
frag = Fragment.instantiate(context,Fragment2::class.java.name) as Fragment2
frag?.arguments=bundle
fragmentManager.beginTransaction().replace(R.id.contentPanel1,frag).commit()
我已经在 fragment1 上编写了这些代码并将数据传递给它
在 Fragment 2 上,我收到了作为 null 的捆绑包,任何人都可以解决它
var bundle : Bundle ?
bundle = arguments
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
Toast.makeText(context,bundle.toString(),Toast.LENGTH_LONG).show()
【问题讨论】:
在 fragment1 中,您实际上在哪里将bundle
设置为 null 以外的任何值?
【参考方案1】:
问题是你没有初始化bundle的var。看下面。
val bundle = Bundle()
bundle.putString("text",text)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
frag = Fragment.instantiate(context,Fragment2::class.java.name) as Fragment2
frag?.arguments=bundle
fragmentManager.beginTransaction().replace(R.id.contentPanel1,frag).commit()
【讨论】:
【参考方案2】:请遵循以下代码
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @return A new instance of fragment ProfileFragment.
*/
// TODO: Rename and change types and number of parameters
@JvmStatic
fun newInstance(bundle: Bundle) = ProfileFragment().apply arguments
= bundle
startFragment(ProfileFragment.newInstance(Bundle()))
【讨论】:
以上是关于带有片段的 Kotlin的主要内容,如果未能解决你的问题,请参考以下文章
KotlinKotlin 函数总结 ( 具名函数 | 匿名函数 | Lambda 表达式 | 闭包 | 内联函数 | 函数引用 )
KotlinKotlin 函数总结 ( 具名函数 | 匿名函数 | Lambda 表达式 | 闭包 | 内联函数 | 函数引用 )
KotlinKotlin 常用表达式 ( range 范围表达式 | when 条件表达式 | 字符串模板 )
KotlinKotlin 与 Java 互操作 ② ( @JvmField 注解字段给 Java | @JvmOverloads 注解修饰函数 | @JvmStatic 注解声明静态成员 )