科特林创建一个片段,得到了这样的错误:

时间:2018-07-23 10:27:49

标签: android kotlin fragment

创建/B/时:

fragment

我收到这样的编译错误:

class DetailListFragment(siteId: Int, channelId: Int) : BaseFragment() {

private var mSiteId: Int
private var mChannelId: Int

init {
    this.mSiteId = siteId
    this.mChannelId = channelId
}

override fun getLayoutId(): Int {
}

override fun initView() {
}

override fun initData() {
}}

如何处理此问题? 如何在Kotlin中声明许多构造函数?

1 个答案:

答案 0 :(得分:0)

该错误表明该片段没有可用的“无参数”构造器(一个空构造器),并且当配置发生更改时,系统无法重新创建该片段。 / p>

不应使用构造函数将参数传递给片段。

应该(我是说您必须)使用参数方法将参数传递给fragment

赞:

class DetailListFragment : BaseFragment() {

    companion object {
        fun create(siteId: Int, channelId: Int):DetailListFragment {
            return DetailListFragment().apply {
                 arguments = Bundle()
                 arguments?.putInt("siteId", siteId)
                 arguments?.putInt("channelId", channelId)
            }
        }
    }

    override fun onCreate(savedState:Bundle) {
         mSiteId = arguments?.getInt("siteId") ?: 0
         mChannelId= arguments?.getInt("channelId") ?: 0
    }
}