我的MainActivity在启动时打开SignInFragment,身份验证成功后登录打开MainFragment。如何在按下后从这两个片段中关闭 MainActivity?当我尝试将回按回调添加到所需的片段中时,它会关闭每个片段的 MainActivity,而不是仅关闭那个片段。我也不能使用 popBackStack,因为 Activity 不在 BackStack 中。是否有正确的解决方案可以在按下背面时从所需的片段中关闭活动?
有几种方法可以在按下 onBack 时关闭 Activity,因为您与 Fragment 更相关。首先创建一个名为OnBackPressed的接口,该接口包含函数onBackPressed(任何你喜欢的名称)。在片段中实现接口,因为它的函数 onBackPressed 将在那里定义,所以将 activity?.onFinish() 放在函数体中。
首先,在 MainActivity 中,您重写 onBackPress 函数,然后进行检查(if 条件)。
override fun onBackPressed(){
// get the currentFragment
val currentFragment = supportFragmentManager.findFragmentById(R.id.fragmentID)
if(currentFragment is OnBackPressedListener){
currentFragment.onBackPressed()
} else {
super.onBackPressed().
}
}
这是在片段中点击后退按钮时关闭活动的方法之一。