Fragment中拦截onBackPressed()返回事件
作者:互联网
由于Fragment
中没有onBackPressed
回调,所以需要在Activity
中收到onBackPressed
回调时去执行Fragment
中相应的操作,再根据Fragment
中返回的结果判断是否回退。
- 创建一个接口
interface IOnBackPressed { fun onBackPressed(): Boolean }
- 让需要处理
onBackPressed事件
的Fragment
实现该接口class TestFragment : Fragment(), IOnBackPressed { override fun onBackPressed(): Boolean { //这里进行自己想要的操作,Activity调用此方法时根据返回的结果判断是否回退 val back = (1 + 1 ) > 2 return if (back) { false } else true } }
- 在
Activity
中重写onBackPressed
方法,当执行super.onBackPressed()
表示该Activity
会回退。override fun onBackPressed() { val fragment = (supportFragmentManager.findFragmentById(R.id.container)) as? IOnBackPressed if (fragment == null || fragment.onBackPressed()) { //此Activity会回退的情况 //1. 当前展示的Fragment未实现IOnBackPressed接口 //2. 该fragment重写的onBackPressed()方法返回true super.onBackPressed() } }
标签:Fragment,onBackPressed,Activity,fragment,IOnBackPressed,回退,拦截 来源: https://blog.csdn.net/qq_39240270/article/details/106737778