android Fragment中没有onTouchEvent解决方法
来源:互联网 发布:mac find 查找文件夹 编辑:程序博客网 时间:2024/05/19 06:14
在父类MainActivity中定义如下接口和函数
- public interface MyTouchListener {
- public void onTouchEvent(MotionEvent event);
- }
- // 保存MyTouchListener接口的列表
- private ArrayList<MyTouchListener> myTouchListeners = new ArrayList<MainActivity.MyTouchListener>();
- /**
- * 提供给Fragment通过getActivity()方法来注册自己的触摸事件的方法
- * @param listener
- */
- public void registerMyTouchListener(MyTouchListener listener) {
- myTouchListeners.add(listener);
- }
- /**
- * 提供给Fragment通过getActivity()方法来取消注册自己的触摸事件的方法
- * @param listener
- */
- public void unRegisterMyTouchListener(MyTouchListener listener) {
- myTouchListeners.remove( listener );
- }
- /**
- * 分发触摸事件给所有注册了MyTouchListener的接口
- */
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- for (MyTouchListener listener : myTouchListeners) {
- listener.onTouchEvent(ev);
- }
- return super.dispatchTouchEvent(ev);
- }
public interface MyTouchListener { public void onTouchEvent(MotionEvent event);}// 保存MyTouchListener接口的列表private ArrayList<MyTouchListener> myTouchListeners = new ArrayList<MainActivity.MyTouchListener>();/*** 提供给Fragment通过getActivity()方法来注册自己的触摸事件的方法* @param listener*/public void registerMyTouchListener(MyTouchListener listener) { myTouchListeners.add(listener);}/*** 提供给Fragment通过getActivity()方法来取消注册自己的触摸事件的方法* @param listener*/public void unRegisterMyTouchListener(MyTouchListener listener) { myTouchListeners.remove( listener );}/*** 分发触摸事件给所有注册了MyTouchListener的接口*/@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) { for (MyTouchListener listener : myTouchListeners) { listener.onTouchEvent(ev); } return super.dispatchTouchEvent(ev);}然后是在Fragment中
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View rootView = inflater.inflate(R.layout.home_page, container,false); /**
- * Fragment中,注册
- * 接收MainActivity的Touch回调的对象
- * 重写其中的onTouchEvent函数,并进行该Fragment的逻辑处理
- */
- MainActivity.MyTouchListener myTouchListener = new MainActivity.MyTouchListener() {
- @Override
- public void onTouchEvent(MotionEvent event) {
- // 处理手势事件
- }
- };
- // 将myTouchListener注册到分发列表
- ((MainActivity)this.getActivity()).registerMyTouchListener(myTouchListener); return rootView;
- }
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.home_page, container,false); /** * Fragment中,注册 * 接收MainActivity的Touch回调的对象 * 重写其中的onTouchEvent函数,并进行该Fragment的逻辑处理 */ MainActivity.MyTouchListener myTouchListener = new MainActivity.MyTouchListener() { @Override public void onTouchEvent(MotionEvent event) { // 处理手势事件 } }; // 将myTouchListener注册到分发列表 ((MainActivity)this.getActivity()).registerMyTouchListener(myTouchListener); return rootView;}
这样当有touchEvent发生时,MainActivity就会调用dispatchTouchEvent,dispatchTouchEvent接着对每一个注册的对象调用其onTouchEvent函数,也就是myTouchListener中实现的方法,这样Fragment里面就等于实现了onTouchEvent函数,只需要在函数体内实现处理的事件。
阅读全文
0 0
- android Fragment中没有onTouchEvent解决方法
- android Fragment中没有onTouchEvent解决方法
- android Fragment中没有onTouchEvent解决方法
- Android fragment获取ontouchevent回调
- Fragment中onTouchEvent的实现
- android在fragment中实现onTouchEvent办法出现的java.lang.NullPointerException
- Android中onInterceptTouchEvent与onTouchEvent
- Android中onInterceptTouchEvent与onTouchEvent
- Android中onInterceptTouchEvent与onTouchEvent
- Android中onInterceptTouchEvent与onTouchEvent
- Android中onInterceptTouchEvent与onTouchEvent
- Android中onInterceptTouchEvent与onTouchEvent
- Android中onInterceptTouchEvent与onTouchEvent
- Android中onInterceptTouchEvent与onTouchEvent
- Android中 onInterceptTouchEvent, onTouchEvent 理解
- Android中onInterceptTouchEvent与onTouchEvent
- Android中onInterceptTouchEvent与onTouchEvent
- Android中onInterceptTouchEvent与onTouchEvent
- 直接插入排序与希尔排序
- java 反射机制
- 并查集模板
- IDEA使用--字体、编码和JDK Maven等基本设置
- RPC 服务框架 Dubbo 将正式得到官方维护与支持
- android Fragment中没有onTouchEvent解决方法
- 服务端指南 | 良好的 API 设计指南
- keras 设置学习率的办法
- postgres 设置主键自增
- 服务器字体的设置
- .Net 反编译
- cmd 命令操纵文件管理器、创建(删除)多级文件夹
- Extjs6.2 使用GridPanel
- intellij idea(Android studio)左侧project目录显示的方法