在很多场景下,我们需要 Fragment 监听物理 back 键,而不是 Activity,这个时候我们只能做一些处理,来让 Fragment 拦截。
首先在 Fragment 中自定义回调方法,如下:
public boolean onBackPressed() {
EventBus.getDefault().post(new ClosexxxxxEvent()); // 做我们想做的处理
return true; // return true 代表自己处理
}
然后,在 Activity 的 onBackPressed 方法中,进行相应的处理:
@Override
public void onBackPressed() {
if (mxxxxxxFragment == null) { // 获取到你的 Fragment 实例
mxxxxxxFragment = (BaseFragment) getSupportFragmentManager()
.findFragmentById(R.id.xxxxxx)
.getChildFragmentManager().findFragmentById(R.id.xxxxx);
}
if (mxxxxxxFragment != null && mxxxxxxFragment instanceof xxxxxxFragment
&& !mxxxxxxFragment.isHidden()&& ((xxxxxxFragment) mxxxxxxFragment).onBackPressed()) { // 判断是否是我们需要的 Fragment
return; // 拦截 Activity 的 back 监听
}
super.onBackPressed();
}
完成!
------致所有正在努力奋斗的程序猿们!加油!!
有码走遍天下 无码寸步难行
1024 - 梦想,永不止步!
爱编程 不爱Bug
爱加班 不爱黑眼圈
固执 但不偏执
疯狂 但不疯癫
生活里的菜鸟
工作中的大神
身怀宝藏,一心憧憬星辰大海
追求极致,目标始于高山之巅
一群怀揣好奇,梦想改变世界的孩子
一群追日逐浪,正在改变世界的极客
你们用最美的语言,诠释着科技的力量
你们用极速的创新,引领着时代的变迁
——乐于分享,共同进步,欢迎补充
——Any comments greatly appreciated
——诚心欢迎各位交流讨论!QQ:1138517609
——GitHub:https://github.com/selfconzrr