Изменить фрагмент, нажав на nav_header_main - PullRequest
0 голосов
/ 05 декабря 2018

Я работаю над приложением Android, используя активность в навигационной панели.Каждый отдельный элемент меню используется для отображения своего фрагмента в mainActivity.

Когда я открываю свой ящик, я бы хотел, чтобы заголовок ящика (соответствующий файлу nav_header_main.xml, с логотипом и двумя текстами) былкликабельна и отображает мой HomeFragment ().

Как я могу это сделать?

1 Ответ

0 голосов
/ 07 декабря 2018

Я новичок, поэтому ответ может показаться очевидным, но хорошо, я наконец-то нашел решение:

class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {

fun changeFragment (fragment: Fragment){
    supportFragmentManager.beginTransaction().replace(R.id.content, fragment).commit()
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    setSupportActionBar(toolbar)

    val toggle = ActionBarDrawerToggle(
        this, drawer_layout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close
    )
    drawer_layout.addDrawerListener(toggle)
    toggle.syncState()

// hamburger menu listener
    nav_view.setNavigationItemSelectedListener(this)

// navigation header menu listener
    val headerLayout = nav_view.getHeaderView(0)

    val nav_drawer_header = headerLayout.findViewById(R.id.nav_header) as LinearLayout
    nav_drawer_header.setOnClickListener{
        changeFragment(HomeFragment())
        onBackPressed()
    }


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 -> return true
        else -> return super.onOptionsItemSelected(item)
    }
}
...