Fragmento en kotlin

Estoy atrapado en mi aplicación porque tengo que hacer un fragment con el cajón de navigation en kotlin. ¿Alguien puede ayudar? He buscado muchas cosas en la web pero todavía no he encontrado nada … Aquí abajo hay dos elementos que tengo que hacer en la actividad principal y quiero que también estén presentes en el fragment.

override fun onNavigationItemSelected(item: MenuItem): Boolean { // Handle navigation view item clicks here. when (item.itemId) { R.id.home -> { } R.id.subjects -> { val intent = Intent(this, SubjectsActivity::class.java) startActivity(intent) } } drawer_layout.closeDrawer(GravityCompat.START) return true } 

Es algo como esto? @NongthonbamTonthoi

 class NavViewFragment : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { fun AppCompatActivity.addFragment(fragment: Fragment, frameId: Int){ supportFragmentManager.inTransaction { add(frameId, fragment) } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_nav_view_fragment) setSupportActionBar(toolbar) 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.nav_view, 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 -> return true else -> return super.onOptionsItemSelected(item) } } override fun onNavigationItemSelected(item: MenuItem): Boolean { // Handle navigation view item clicks here. when (item.itemId) { R.id.home -> { } R.id.subjects -> { val intent = Intent(this, SubjectsActivity::class.java) startActivity(intent) } } drawer_layout.closeDrawer(GravityCompat.START) return true } inline fun FragmentManager.inTransaction(func: FragmentTransaction.() -> Unit) { val fragmentTransaction = beginTransaction() fragmentTransaction.func() fragmentTransaction.commit() } } 

Puede usar esto para replace su marco con HomeFragment (). MainDisplayFrame debe ser reemplazado por su FrameID.

 var fragmentTransaction = supportFragmentManager.beginTransaction() fragmentTransaction = supportFragmentManager.beginTransaction() fragmentTransaction.replace(R.id.mainDisplayFrame,HomeFragment()).commit() mDrawerLayout!!.closeDrawers()