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. } }