首页 > 解决方案 > kotlin android“OnbackPressed”什么都不覆盖

问题描述

我知道这已经问过几次了,但我还是什么都没得到(我在 android 开发方面还很陌生)。

所以我在 MainActivity.kt 中设置了我的后退按钮,如下所示:

    class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)

        val navController = this.findNavController(R.id.myNavHostFragment)

        NavigationUI.setupActionBarWithNavController(this, navController)

        supportActionBar?.setDisplayHomeAsUpEnabled(false)


    }


        // Set up the back button on action bar
        override fun onSupportNavigateUp(): Boolean {
            val navController = this.findNavController(R.id.myNavHostFragment)

            return navController.navigateUp()
        }
    }

我想要的是在某些片段中禁用了此后退按钮,因此我尝试在其中一个片段中覆盖该onBackPressed()功能(这是互联网上大多数人所说的):

    class DashboardFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        // Declare that this fragment has menu
        setHasOptionsMenu(true)


        // Set action bar title to "Main Dashboard"
        (activity as AppCompatActivity).supportActionBar?.title = "Main Dashboard"


        // Binding object for this fragment and the layout
        val binding: FragmentDashboardBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_dashboard, container, false)


        //Some codes here//


        return binding.root
    }

        // This is where the error occured
        override fun onBackPressed() {
            super.onBackPressed()
        }

        override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
            super.onCreateOptionsMenu(menu, inflater)
            inflater?.inflate(R.menu.nav_overflow_menu, menu)
        }
    }

但它返回一个错误说:

“OnBackPressed” 覆盖无

我错过了什么吗?我已经在寻找解决方案,但仍然对此感到困惑。

标签: androidandroid-fragmentskotlin

解决方案


谁知道... onSupportNavigateUp() 仅适用于 4.0 及更高版本。对于下面的 onNavigateUp() 被调用。

所以

    override fun onNavigateUp(): Boolean {
        val navController = this.findNavController(R.id.myNavHostFragment)

        return navController.navigateUp()
    }

推荐阅读