【问题标题】:Kotlin with Fragments带有片段的 Kotlin
【发布时间】: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 以外的任何值?

标签: android android-fragments kotlin


【解决方案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()))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 2021-12-09
      • 2020-11-02
      • 2022-07-04
      相关资源
      最近更新 更多