单个活动应用程序中的导航抽屉,并在所有导航项目中显示默认片段

问题描述

代码代码用于在应用启动时显示FirstFragment:

MainActivity.kt-> OnCreate()

val currentFragment =
            supportFragmentManager.findFragmentById(R.id.fragmentContainer)

        if (currentFragment == null) {
            val fragment = FirstFragment.newInstance()
            replaceFragment(fragment)
        }

和通常的导航抽屉代码

MainActivity.kt OnCreate()

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.navigation_drawer)
        val toolbar: Toolbar = findViewById(R.id.toolbar)
        setSupportActionBar(toolbar)

        val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
        //Navigation Drawer
        val toggle = ActionBarDrawerToggle(
            this,drawerLayout,toolbar,R.string.open_drawer,R.string.close_drawer
        )
        drawerLayout.addDrawerListener(toggle)
        toggle.syncState()

        val navigationView: NavigationView = findViewById(R.id.navigation_view)
        navigationView.setNavigationItemSelectedListener(this)

并覆盖onCreateOptionsMenu(),onNavigationItemSelected():

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        // Inflate the menu,this adds items to the action bar
        menuInflater.inflate(R.menu.menu,menu)
        return true
    }

    override fun onNavigationItemSelected(item: MenuItem): Boolean {
        when(item.itemId) {
            R.id.second_fragment_id -> {
                Log.d(TAG,"second_id")
            }
            R.id.third_fragment_id -> {
                val fragment = ThirdFragment.newInstance()
                replaceFragment(fragment)
            }
        }
        val drawer = findViewById<DrawerLayout>(R.id.drawer_layout)
        drawer.closeDrawer(GravityCompat.END)
        return true
    }

问题:

在项目中,Log.e()正常工作 但在替换ThirdFragment项时再次显示FirstFragment。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)