文档章节

Android Fragment中监听事件

xunfang
 xunfang
发布于 2016/03/01 16:51
字数 267
阅读 92
收藏 0

 问题:

Fragment中没有提供监听touch事件的方法。

解决方案:

Activity中能够监听touch事件。

于是在Activity中写一个接口,MyOnTouchListener,在需要监听touch事件的fragment中实现这个窗口。

在Activity中实现如下方法:

[java] view plain copy
在CODE上查看代码片派生到我的代码片

    /**
    * 以下的几个方法用来,让fragment能够监听touch事件
    */  
    private ArrayList<MyOnTouchListener> onTouchListeners = new ArrayList<MyOnTouchListener>(  
    10);  
      
    @Override  
    public boolean dispatchTouchEvent(MotionEvent ev) {  
    for (MyOnTouchListener listener : onTouchListeners) {  
    listener.onTouch(ev);  
    }  
    return super.dispatchTouchEvent(ev);  
    }  
      
    public void registerMyOnTouchListener(MyOnTouchListener myOnTouchListener) {  
    onTouchListeners.add(myOnTouchListener);  
    }  
      
    public void unregisterMyOnTouchListener(MyOnTouchListener myOnTouchListener) {  
    onTouchListeners.remove(myOnTouchListener);  
    }  
      
    public interface MyOnTouchListener {  
    public boolean onTouch(MotionEvent ev);  
    }  


dispatchTouchEvent 可以监听所有的关于屏幕的行为。。。。。



在Fragment中实现如下代码:
[java] view plain copy
在CODE上查看代码片派生到我的代码片

    private GestureDetector mGestureDetector;  
      
    MainActivity.MyOnTouchListener myOnTouchListener;  
      
    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container,  
    Bundle savedInstanceState) {  
      
    Log.e(TAG, "onCreateView");  
      
    View view = inflater.inflate(R.layout.fragment_contact, container,  
    false);  
    this.view = view;  
      
    mGestureDetector = new GestureDetector(getActivity(),  
    new SideIndexGestureListener());  
      
    listView = (ListView) view.findViewById(R.id.listview_contacts);  
    getDataFromSQLite();  
    spliceData();  
    showListView();  
      
    myOnTouchListener = new MainActivity.MyOnTouchListener() {  
      
    @Override  
    public boolean onTouch(MotionEvent ev) {  
    boolean result = mGestureDetector.onTouchEvent(ev);  
    return result;  
    }  
    };  
    ((MainActivity) getActivity())  
    .registerMyOnTouchListener(myOnTouchListener);  
      
    return view;  
    } 

本文转载自:http://blog.csdn.net/jdsjlzx/article/details/20695279

xunfang
粉丝 0
博文 51
码字总数 7950
作品 0
海淀
程序员
私信 提问
Android Fragment添加onTouchEvent监听

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/82862086 Android Fragment添加onTouchEvent监听 Android原生的Fragment不像Activity一......

zhangphil
2018/09/27
0
0
Android 官方架构组件(一)——Lifecycle

什么是Lifecycle? Lifecycle 组件指的是 android.arch.lifecycle 包下提供的各种类与接口,可以让开发者构建能感知其他组件(主要指Activity 、Fragment)生命周期(lifecycle-aware)的类。...

Android小安
01/17
0
0
Fragment中监听onKey事件

wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改。本文分享android开发Fragment中监听onKey事件主要代码,供技术员参...

OSC_RjDivW
2016/11/25
542
0
最简单直接碎片操作,动态增删改(1)

新建activity继承fragmentactivity 在布局文件中拖入一个layout,起个名字比如fragmentlayout 新建一个class,继承fragment 新建一个layout,在里面随便放几个控件 在fragment中创建onActiv...

postdep
2014/07/16
0
0
如何绑定页面生命周期(二)-基于Android Architecture Components的Lifecycle实现

上篇文章如何绑定页面生命周期(一)-Glide实现介绍了Glide实现生命周期感知的原理,这里我们再介绍基于Android Architecture Components的Lifecycle实现页面生命周期感知。 Lifecycle是And...

宇是我
2018/07/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

缓存雪崩

缓存雪崩原因:大批次的缓存数据,同一时刻过期 解决方案: 1、尽可能避免所有缓存在同一时刻过期,即:合理调整过期策略 2、对条件加锁 伪代码: public ProductselectProduct(String id){ ...

少年已不再年少
43分钟前
7
0
所以说这才是Redis进化史吗?看Redis是如何变成最强缓存的

写在前面:笔者翻阅了很多资料,只能找到Redis2.2及以后的主要版本的发布日志。所以,让我们从2.2开始一步一步深入了解Redis。 2.2 redis-cli命令非常大的改进: Tab补全,支持help(例如help ...

Java干货分享
今天
7
0
manjaro抽风,/usr/lib/modules目录丢失

现象 2019年6月16日这周,突然发现manjaro抽风: 先是启动时无法加载一些内核模块,导致启动失败 然后用启动盘重新pacman -S linux,第一次启动是好的,再启动就有问题了 原因 翻来覆去搞不定...

chuqq
今天
5
0
MyClouds-2.0-RC 发布,企业级微服务平台

MyClouds企业级微服务平台 MyClouds-V2.0-RC 已发布。 更新如下 [优化] 重构了系统架构。(移除myclouds-admin-webserver工程,停用后端thymeleaf模版引擎,前后端彻底分离;移除了myclouds-...

xiongchun
今天
1
0
Wine-Staging 4.9 发布,增添一些新补丁

Wine-Staging的工作还在继续,到4.9版为止,在上游Wine代码库上有超过830个补丁。 在上周五的Wine 4.9发布之后,Wine-Staging 4.9已经发布了,之前的一些暂存工作现在围绕Windows编解码器和D...

linuxCool
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部