让Fragment监听返回键
来源:互联网 发布:wp login.php 编辑:程序博客网 时间:2024/05/23 07:25
Activity可以很容易的得到物理返回键的监听事件,而Fragment却不能。假设FragmentActivity有三个Fragment,一般安卓用户期望点击返回键会一层层返回到FragmentActivity。当然,我们可以将每个Fragment对应的Transaction放到BackStack中,但是如果每个Fragment有对返回事件的特殊消费,那么在FragmentActivity的onBackPressed()中的代码就会比较混乱,例如:
这对于有代码洁癖的程序猿显然是不能容忍的,后来发现了一种优雅的解决方案。首先创建一个抽象类BackHandledFragment,该类有一个抽象方法onBackPressed(),所有BackHandledFragment的子类在onBackPressed方法中处理各自对Back事件的消费逻辑。onBackPressed返回布尔值,宿主FragmentActivity将会根据该方法的返回值判断子Fragment是否有消费Back事件。此外,宿主FragmentActivity还会保持一份当前Fragment的引用,当用户按下Back键时,宿主Activity会判断当前Fragment是否需要消费该事件,如果没有Fragment消费才会自己消费。
宿主FragmentActivity需要继承BackHandledIntegerface,子Fragment会通过该接口告诉宿主FragmentActivity自己是当前屏幕可见的Fragment。所以在Fragment的onCreate中会判断宿主FragmentActivity是否已继承了该接口。在Fragment的onStart()方法中就会调用该接口告诉宿主FragmentActivity自己是当前屏幕可见的Fragment。宿主FragmentActivity就可以在onBackPressed()方法中对Back事件进行判断处理了。
示例程序Github链接。
参考资料:Handling back button press Inside Fragments
http://write.blog.csdn.NET/postedit/40507387
0 0
- 让Fragment监听返回键
- 优雅的让Fragment监听返回键
- 优雅的让Fragment监听返回键
- fragment监听返回键
- Fragment监听返回键
- Fragment 监听返回键
- Fragment监听返回键
- Fragment监听返回键
- Fragment监听返回键
- android让Fragment监听返回按钮
- fragment监听onBackPressed返回键
- android fragment 监听返回键
- Fragment中监听返回键
- Fragment Webview 返回键监听
- Fragment中监听返回键
- Android fragment监听返回键
- fragment监听onBackPressed返回键
- android Fragment 无法用返回键监听
- 【解题报告】Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)
- 深入Java底层:内存屏障与JVM并发详解(1)
- 鼠标移入移出事件的多种方法实现
- mysql--下载
- fire fox os 简介
- 让Fragment监听返回键
- Item38 Be aware of varying thread handle destructor behavior
- linux基础命令
- C语言第五次作业练习
- python语句实现文件合并
- 周志华《Machine Learning》学习笔记(11)--聚类
- HDOJ 2191 (多重背包/二进制分解/单调队列优化DP)
- 背包——AtCoder Regular Contest 073 #D
- 集群、分布式环境下5种session处理策略