Fragment中通过回调获得实现Activity中的onTouchEvent函数
2015-01-15 14:59
323 查看
该方法分为两步,首先是在父类Activity中,构造一个回调接口,并向外提供注册和销毁该回调接口的方法。然后在Activity的dispatchTouchEvent函数中遍历所有注册了该回调接口的对象,分发onTouchEvent事件。
/**
* 回调接口
* @author zhaoxin5
*
*/
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) {
// TODO Auto-generated method stub
for (MyTouchListener listener : myTouchListeners) {
listener.onTouchEvent(ev);
}
return super.dispatchTouchEvent(ev);
}
然后是在Fragment中的处理,首先需要声明一个父类Activity中的回调接口的对象,然后实现该回调接口中的onTouchEvent方法。并加上自己的处理。同时需要在该Fragment的初始化函数中,调用父类Activity的registerMyTouchListener函数来注册自己声明的父类Activity中的回调接口的对象,以便把自己加入到父类Activity的事件分发的接收对象列表中。
/**
* Fragment中,注册
* 接收MainActivity的Touch回调的对象
* 重写其中的onTouchEvent函数,并进行该Fragment的逻辑处理
*/
private MainActivity.MyTouchListener mTouchListener = new MyTouchListener() {
@Override
public void onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_UP){
//逻辑处理
}
}
};
//在该Fragment的构造函数中注册mTouchListener的回调
((MainActivity)this.getActivity()).registerMyTouchListener(mTouchListener);
/**
* 回调接口
* @author zhaoxin5
*
*/
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) {
// TODO Auto-generated method stub
for (MyTouchListener listener : myTouchListeners) {
listener.onTouchEvent(ev);
}
return super.dispatchTouchEvent(ev);
}
然后是在Fragment中的处理,首先需要声明一个父类Activity中的回调接口的对象,然后实现该回调接口中的onTouchEvent方法。并加上自己的处理。同时需要在该Fragment的初始化函数中,调用父类Activity的registerMyTouchListener函数来注册自己声明的父类Activity中的回调接口的对象,以便把自己加入到父类Activity的事件分发的接收对象列表中。
/**
* Fragment中,注册
* 接收MainActivity的Touch回调的对象
* 重写其中的onTouchEvent函数,并进行该Fragment的逻辑处理
*/
private MainActivity.MyTouchListener mTouchListener = new MyTouchListener() {
@Override
public void onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_UP){
//逻辑处理
}
}
};
//在该Fragment的构造函数中注册mTouchListener的回调
((MainActivity)this.getActivity()).registerMyTouchListener(mTouchListener);
相关文章推荐
- 【转载】Fragment中通过回调获得实现Activity中的onTouchEvent函数
- 【转载】Fragment中通过回调获得实现Activity中的onTouchEvent函数
- Android Fragment与Activity通过回调实现通信
- Android开发之Fragment与Activity的数据交互通过回调机制实现(源代码分享)
- Android开发之Fragment与Activity的数据交互通过回调机制实现(源代码分享)
- Android开发之Fragment与Activity的数据交互通过回调机制实现
- 利用接口回调实现fragment与activity的通信
- 通过回调,Fragment向Activity传递信息
- Activity与Fragment通信——回调方法实现
- 利用接口回调实现fragment与activity的通信
- android开发 从fragment中通过控件跳到另一个activity的实现
- fragment向activity传送数据,用回调接口实现
- 通过 回调让Activity和Fragment及时交互
- Activity与Fragment通过接口回调进行通信
- android小技巧:在activity中实现与绑定的fragment的回调
- 回调接口实现Activity与Fragment之间的通信
- Fragment 的静态方式和动态方式以及动态方式中fragment之间通过activity传递 数据(接口回调 ):
- 安卓中回调实现Fragment向Activity传值
- (一)Activity和Fragment生命周期:通过回调函数观察生命周期
- android小技巧:在activity中实现与绑定的fragment的回调