FragmentTransaction не будет компилироваться в проекте Android Kotlin

В процессе обучения Kotlin с Android отказ от компиляции и, как правило, бесполезный текст ошибки оставил меня в тупике. Текст ошибки говорит следующее:

Приведенные аргументы не могут быть вызваны ни одной из следующих функций. add (Fragment !, String!), определенный в android.app.FragmentTransaction add (Int, Fragment!), определенный в android.app.FragmentTransaction

В обоих случаях Фрагмент! текст выделен красным цветом. Я знаю, что Котлин ссылается на классы Java с помощью! !, но я не могу понять, почему он не доволен тем, как я представил данные.

Любое понимание было бы весьма благодарным.

fun displayEditRoutine(){ //Set our variables var ft = fragmentManager.beginTransaction() //Basic "newInstance" constructor to avoid omitting necessary variables var frag = EditRoutine.newInstance(mRoutineID,this) //Here is where error occurs ft.add(R.id.are_container, frag).commit() } 

Класс EditRoutine ссылается:

 class EditRoutine : Fragment() { //Variables private var mRoutineID: String? = null private var mListener: OnEditRoutineFragmentListener? = null //Views @BindView(R.id.fer_routineName) internal var vRoutine: TextInputEditText? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (arguments != null) { mRoutineID = arguments.getString(Keys.b_RoutineID) } } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val v = inflater.inflate(R.layout.fragment_edit_routine, container, false) ButterKnife.bind(activity) return v } // TODO: Rename method, update argument and hook method into UI event fun onButtonPressed(): Unit{ if (mListener != null && vRoutine!!.text.toString() != "") { val contentValues = ContentValues() contentValues.put(Routine.Table.KEY_NAME, vRoutine!!.text.toString()) //Pass the values into the interface mListener!!.onDoneClicked(contentValues) } } override fun onAttach(context: Context) { super.onAttach(context) if (context is OnEditRoutineFragmentListener) { mListener = context } else { throw RuntimeException(context.toString() + " must implement OnEditRoutineFragmentListener") } } override fun onDetach() { super.onDetach() mListener = null } //Internal Methods //Interface interface OnEditRoutineFragmentListener { // TODO: Update argument type and name fun onDoneClicked(cv: ContentValues) } companion object { /** * @param routineID = passed ID. If null, don't load content values * * * @return A new instance of fragment EditRoutine. */ fun newInstance(routineID: String, ctx: Context): EditRoutine { val fragment = EditRoutine() val args = Bundle() args.putString(Keys.b_RoutineID, routineID) fragment.arguments = args return fragment } } 

    Попробуйте это: ft.add(R.id.container_all, frag as Fragment).commit()

    JvmStatic: требуется аннотация ( документация )

    сопутствующий объект {

     /** * @param routineID = passed ID. If null, don't load content values * * * @return A new instance of fragment EditRoutine. */ @JvmStatic fun newInstance(routineID: String, ctx: Context): EditRoutine { val fragment = EditRoutine() val args = Bundle() args.putString(Keys.b_RoutineID, routineID) fragment.arguments = args return fragment } 

    }