title: How to Set SetOnClickListener for a button in a fragment of NavigationDrawerActivity? in Kotlin
body: <p>Hello everyone I made a Drawer Activity but in my fragment i want a button So that when i press button this Should change text to Hi or Hello, but i don't where the code should be present when i try to add code in FirstFragemt.kt file it throw an error ,Please Help me Thank you </p>
  
  <p>Here is My MainActivity : </p>
  
  <pre><code>class MainActivity : AppCompatActivity(),FirstFragment.OnFragmentInteractionListener,SecondFragment.OnFragmentInteractionListener, NavigationView.OnNavigationItemSelectedListener {
  
  
   override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)
      setSupportActionBar(toolbar)
  
      fab.setOnClickListener { view -&gt;
          Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show()
      }
  
      val toggle = ActionBarDrawerToggle(this, drawer_layout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close)
      drawer_layout.addDrawerListener(toggle)
      toggle.syncState()
  
      nav_view.setNavigationItemSelectedListener(this)
  
  }
  
  override fun onBackPressed() {
      if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
          drawer_layout.closeDrawer(GravityCompat.START)
      } else {
          super.onBackPressed()
      }
  }
  
  override fun onCreateOptionsMenu(menu: Menu): Boolean {
      // Inflate the menu; this adds items to the action bar if it is present.
      menuInflater.inflate(R.menu.main, menu)
      return true
  }
  
  override fun onOptionsItemSelected(item: MenuItem): Boolean {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      when (item.itemId) {
          R.id.action_settings -&gt; return true
          else -&gt; return super.onOptionsItemSelected(item)
      }
  }
  
  override fun onNavigationItemSelected(item: MenuItem): Boolean {
      // Handle navigation view item clicks here.
      when (item.itemId) {
          R.id.first_activity -&gt; {
              title = "Fragment One"
              val fragment = FirstFragment()
              val fragmentTransaction = supportFragmentManager.beginTransaction()
              fragmentTransaction.replace(R.id.fragmentID, fragment, "FragmentOne")  //create first framelayout with id fram in the activity where fragments will be displayed
              fragmentTransaction.commit() // Handle the camera action
          }
          R.id.second_activity -&gt; {
              title = "Fragment Second"
              val fragment = SecondFragment()
              val fragmentTransaction = supportFragmentManager.beginTransaction()
              fragmentTransaction.replace(R.id.fragmentID, fragment, "FragmentSecond")  //create first framelayout with id fram in the activity where fragments will be displayed
              fragmentTransaction.commit()
          }
  
          R.id.nav_share -&gt; {
  
          }
          R.id.nav_exit -&gt; {
              System.exit(0)
          }
      }
  
      drawer_layout.closeDrawer(GravityCompat.START)
      return true
  }
  
   override fun onFragmentInteraction(uri: Uri) {
       TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
   } }
  </code></pre>
  
  <p>Here is My FirstFragent file :</p>
  
  <p>`   </p>
  
  <pre><code>class FirstFragment : Fragment() {
  private var mParam1: String? = null
  private var mParam2: String? = null
  
  private var mListener: OnFragmentInteractionListener? = null
  
  override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      if (arguments != null) {
          mParam1 = arguments.getString(ARG_PARAM1)
          mParam2 = arguments.getString(ARG_PARAM2)
      }
  
  
  
  }
  
  override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
      // Inflate the layout for this fragment
      return inflater!!.inflate(R.layout.fragment_first, container, false)
  }
  
  // TODO: Rename method, update argument and hook method into UI event
  fun onButtonPressed(uri: Uri) {
      if (mListener != null) {
          mListener!!.onFragmentInteraction(uri)
      }
  }
  
  override fun onAttach(context: Context?) {
      super.onAttach(context)
      if (context is OnFragmentInteractionListener) {
          mListener = context
      } else {
          throw RuntimeException(context!!.toString() + " must implement OnFragmentInteractionListener")
      }
  }
  
  override fun onDetach() {
      super.onDetach()
      mListener = null
  }
  
  /**
   * This interface must be implemented by activities that contain this
   * fragment to allow an interaction in this fragment to be communicated
   * to the activity and potentially other fragments contained in that
   * activity.
   *
   *
   * See the Android Training lesson [Communicating with Other Fragments](http://developer.android.com/training/basics/fragments/communicating.html) for more information.
   */
  interface OnFragmentInteractionListener {
      // TODO: Update argument type and name
      fun onFragmentInteraction(uri: Uri)
  }
  
  companion object {
      // TODO: Rename parameter arguments, choose names that match
      // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
      private val ARG_PARAM1 = "param1"
      private val ARG_PARAM2 = "param2"
  
      /**
       * Use this factory method to create a new instance of
       * this fragment using the provided parameters.
       *
       * @param param1 Parameter 1.
       * @param param2 Parameter 2.
       * @return A new instance of fragment FirstFragment.
       */
      // TODO: Rename and change types and number of parameters
      fun newInstance(param1: String, param2: String): FirstFragment {
          val fragment = FirstFragment()
          val args = Bundle()
          args.putString(ARG_PARAM1, param1)
          args.putString(ARG_PARAM2, param2)
          fragment.arguments = args
          return fragment
      }
  }
  </code></pre>
  
  <p>}// Required empty public constructor</p>
  
  <p>Here is my FirstFragment layout xml file :</p>
  
  <pre><code>&lt;FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context="com.a3.aakap.ftrial.FirstFragment"&gt;
  
  &lt;!-- TODO: Update blank fragment layout --&gt;
  &lt;TextView
      android:id="@+id/text"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:text="@string/hello_blank_fragment" /&gt;
  
  &lt;Button
      android:id="@+id/button"
      android:layout_width="200sp"
      android:layout_height="50sp"
      android:text="Click me !!"
      android:layout_marginLeft="100dp"
      android:layout_marginRight="100dp"
      android:layout_gravity="center"/&gt;
  &lt;/FrameLayout&gt;
  </code></pre>