【问题标题】:Change fragment by clicking on the nav_header_main通过单击 nav_header_main 更改片段
【发布时间】:2018-12-05 10:11:07
【问题描述】:

我正在使用导航抽屉活动开发一个 Android 应用程序。 每个不同的菜单项都用于在我的 mainActivity 上显示自己的片段。

当我打开抽屉时,我希望抽屉标题(对应于文件 nav_header_main.xml,带有徽标和 2 个文本)可以点击,然后显示我的 HomeFragment()。

我该怎么做?

【问题讨论】:

    标签: android android-fragments navigation-drawer


    【解决方案1】:

    我是新手,所以答案似乎很明显,但是好的,我终于找到了解决方案:

    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)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 2013-01-02
      相关资源
      最近更新 更多