Android

使用Navigation时,给Fragment添加类似onBac

2019-04-09  本文已影响0人  3ebc24b45a3b

通过查看源码发现,在导航视图文件中为fragment添加的name属性可以通过FragmentNavigator.Destination的getClassName(),而NavController也提供了得到当前Destination的方法getCurrentDestination(),于是就可以在activity中判断出当前显示的是哪个Fragment。

Talk is cheap. Show me the code.

    override fun onBackPressed() {
        val navController = findNavController(this, cn.hisw.sjtw.R.id.nav_host_fragment)
        val currentDestination = navController.currentDestination  // 得到当前目的地
        if (currentDestination is FragmentNavigator.Destination){  //对Destination进行强制转换
            when (currentDestination.className){
                //如果当前页是SplashFragment或StartFragment或MainFragment则直接退出Activity
                SplashFragment::class.java.name ,
                StartFragment::class.java.name ,
                MainFragment::class.java.name ->
                    finish()
                else -> super.onBackPressed()
            }
        }else {
            super.onBackPressed()
        }
    }
上一篇下一篇

猜你喜欢

热点阅读