Kotlin не может идентифицировать параметры, если явно не указано

Есть проблема, которая меня пугает, когда я пытаюсь написать проект Android в Котлине.

Когда я пытаюсь вызвать некоторые основные функции библиотеки Android, компилятор запрашивает очень конкретные ссылки. Вот пример, в котором инициализируется LoaderManager. Обратите внимание на последний параметр.

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) loaderManager.initLoader(LOADER_ROUTINE, arguments, this as android.support.v4.app.LoaderManager.LoaderCallbacks<Cursor>) } 

Вот нечетная часть. Если я создаю Фрагмент на основе Java, инициализируйте загрузчик без ошибки verbosity или компилятора, а затем конвертируйте в Kotlin, нет ошибки:

 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) loaderManager.initLoader(88, arguments, this) } 

Что мне не хватает. В каком контексте Котлин должен избегать того, чтобы сделать обходной путь добавления в качестве примера WhateverSpecificClass из первого примера?

Изменить: Вот еще один дополнительный контекст. Конкретная ошибка во время компиляции:

  Type inference failed: fun <D : Any!> initLoader (id: Int, args: Bundle!, callback: LoaderManager.LoaderCallbacks<D!>!) : Loader<D!>! cannot be applied Int, Bundle!, EditRoutine ) 

Весь код обертывания фрагмента

  package com.inviscidlabs.ero.Fragments import android.app.LoaderManager import android.content.ContentValues import android.content.Context import android.content.CursorLoader import android.content.Loader import android.database.Cursor import android.os.Bundle import android.support.design.widget.TextInputEditText import android.support.v4.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import butterknife.BindView import butterknife.ButterKnife import com.inviscidlabs.ero.Data.EroProvider import com.inviscidlabs.ero.Data.Keys import com.inviscidlabs.ero.Data.Routine import com.inviscidlabs.ero.R class EditRoutine : Fragment(), LoaderManager.LoaderCallbacks<Cursor>{ //Values private val LOADER_ROUTINE: Int = 9150 //Vars private var mRoutineID: String? = null override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) //If the routineID passed is a legitimate ID, initialize the loader if(!mRoutineID.equals(Keys.m_NullValue)){ // this would not work: loaderManager.initLoader(LOADER_ROUTINE, arguments, this) loaderManager.initLoader(LOADER_ROUTINE, arguments, this as android.support.v4.app.LoaderManager.LoaderCallbacks<Cursor>) } } //Loader Functions override fun onCreateLoader(id: Int, args: Bundle): Loader<Cursor>? { if(id==LOADER_ROUTINE){ val projection = arrayOf(Routine.Table._ID, Routine.Table.KEY_NAME) val selection = Routine.Table._ID + "=?" val selectionArgs = arrayOf(args.getString(Keys.b_RoutineID)) val cL = CursorLoader(activity, //Context EroProvider.CONTENT_URI_WORKOUT, //URI projection, //The fields we want (must include ID selection, //WHERE statement for SQL selectionArgs, null)//Arguments for WHERE return cL } return null } override fun onLoaderReset(loader: Loader<Cursor>?) { } override fun onLoadFinished(loader: Loader<Cursor>?, data: Cursor?) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } } 

Параметр контекста будет просто использоваться из интерфейса LoaderCallbacks, поэтому вы должны импортировать его инструкцию и реализовать ее как часть подписи класса следующим образом:

 import android.os.Bundle import android.support.v4.app.Fragment import android.support.v4.app.LoaderManager import android.support.v4.content.Loader import android.database.Cursor class WorkSpaceActivity : Fragment(), LoaderManager.LoaderCallbacks<Cursor> { override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) loaderManager.initLoader(88, null, this) } override fun onCreateLoader(id: Int, args: Bundle?): Loader<Cursor> { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } override fun onLoadFinished(loader: Loader<Cursor>?, data: Cursor?) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } override fun onLoaderReset(loader: Loader<Cursor>?) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } } 
Intereting Posts
Как инициализировать массив в Котлине? Дооснащение 2 Длина содержимого RequestBody больше, чем размер файла Ошибка теста блока привязки к андроидной ошибке Не удалось проанализировать параметры компилятора привязки данных. Params: LinkageError для экземпляра класса Kotlin с уведомлением метода () IntArray vs Array <Int> в Котлине Получение информации KProperty изнутри делегированной собственности вне функций getValue () и setValue () Адаптер привязки Android не работает для CustomView статический эквивалент в Android для kotlin, чтобы избежать утечек памяти обработчика Джексон @JsonAppend со значением по умолчанию Kotlin dagger 2 Ошибка в Android ViewModel для инъекций Gradle не загружает репозиторий Kotlin Как создать перечисление из строки в Котлин? Невозможно внедрить один и тот же экземпляр в Сервис и ViewModel Поддерживает ли Kotlin деревья выражений? Динамически оживлять нижний лист peekHeight