Ни одна из следующих функций не может быть вызвана с предоставленными аргументами: Kotlin - PullRequest
0 голосов
/ 14 июня 2019

Я новичок в kotlin, и я добавил параметр в конструктор, и он выдает эту ошибку? как понять проблему, я не понимаю. Любая помощь будет благодарна

Error public constructor AppView(context: Context, _listener: OnFragmentInteractionListener, _position: Int)defined in com.views.home.AppView @JvmOverloads public constructor AppView(mlist: StoreViewMap, context: Context, attrs: AttributeSet? = ..., defStyle: Int = ...) defined in com.views.home.AppView




class AppView @JvmOverloads constructor(mlist: StoreViewMap, context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
LinearLayout(context, attrs, defStyle) {
private lateinit var listener: OnFragmentInteractionListener
private var position = 0
private val mainView: View
var mlistener: StoreViewMap = mlist

constructor(context: Context, _listener: OnFragmentInteractionListener, _position: Int) : this(context) {
    listener = _listener
    position = _position

    initFeed()
}

init {
    val layoutInflater: LayoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
    mainView = layoutInflater.inflate(R.layout.view_home_feed, this)
}

private fun initFeed() {
    mainView.homeSwipeLayout.setOnRefreshListener { fetchSlots() }
    loadContentSlots(DataCaching(context).getContentSlots())
}

}

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Вы вызываете свой собственный конструктор, вызывая this (context), что означает, что если вы определите параметры вашего конструктора, вызов конструктора будет их игнорировать.

constructor(context: Context) : this(context, null)

constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)

constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs)

Здесь первый конструктор вызывает второй, а второй - третий, а третий вызывает конструктор унаследованного класса LinearLayout в вашем классе.

Решение состоит в том, чтобы создать четвертый конструктор и добавить к нему нужные параметры, например:

constructor(context: Context, mlist: StoreViewMap, _listener: OnFragmentInteractionListener, _position: Int) : this(context){
    // your code
}

Этот конструктор вызовет первый конструктор

0 голосов
/ 14 июня 2019

Вы должны добавить значение по умолчанию к mList в вашем первом конструкторе или добавить параметр StoreViewMap во втором конструкторе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...