title: FragmentTransaction won't Compile in Kotlin Android Project
body: <p>In the process of learning Kotlin with Android, the failure to compile and generally unhelpful error text have left me stumped. The error text says the following:</p>
  
  <blockquote>
    <p>None of the following functions can be called with the arguments
    supplied. add(Fragment!, String!) defined in
    android.app.FragmentTransaction add(Int, Fragment!) defined in
    android.app.FragmentTransaction</p>
  </blockquote>
  
  <p>In both instances the <em>Fragment!</em> text is highlighted in red. I am aware that Kotlin refers to Java classes with an !, but I can't seem to understand why it is not happy with the way in which I provided the inputs.</p>
  
  <p>Any insight would be greatly appreciated.</p>
  
  <pre><code>    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()
  
  }
  </code></pre>
  
  <p>The EditRoutine class being referenced:</p>
  
  <pre><code>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 &amp;&amp; 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
      }
  }
  </code></pre>