Android中片段中的dispatchTouchEvent
我试着让上下滑动手势在片段中工作。 这同样适用于活动。在Fragment中,我对dispatchTouchEvent有一个问题。如何在片段中使用dispatchTouchEvent?有没有同等的方法来实现这一点Android中片段中的dispatchTouchEvent,android,android-fragments,Android,Android Fragments,我试着让上下滑动手势在片段中工作。 这同样适用于活动。在Fragment中,我对dispatchTouchEvent有一个问题。如何在片段中使用dispatchTouchEvent?有没有同等的方法来实现这一点 @Override public boolean dispatchTouchEvent(MotionEvent me) { this.detector.onTouchEvent(me); return super.dispatchTouch
@Override
public boolean dispatchTouchEvent(MotionEvent me)
{
this.detector.onTouchEvent(me);
return super.dispatchTouchEvent(me);
}
如果您的目标是检测/处理刷卡,请在创建视图后在片段视图上添加触摸事件侦听器。片段附加到活动,而不是替换活动。因此,您仍然可以覆盖片段父活动中的dispatchTouchEvent,并从此处传递任何操作 例如:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentByTag("MY_FRAGMENT_TAG");
myFragment.doSomething();
return super.dispatchTouchEvent(ev);
}
您必须像这样在父活动中调度TouchEvent 将此代码添加到父活动:
private List<MyOnTouchListener> onTouchListeners;
@Override
protected void onCreate(Bundle savedInstanceState) {
if(onTouchListeners==null)
{
onTouchListeners=new ArrayList<>();
}
}
public void registerMyOnTouchListener(MyOnTouchListener listener){
onTouchListeners.add(listener);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
for(MyOnTouchListener listener:onTouchListeners)
listener.onTouch(ev);
return super.dispatchTouchEvent(ev);
}
public interface MyOnTouchListener {
public void onTouch(MotionEvent ev);
}
并将此代码添加到要在其中显示触摸的片段:
//ontouch listenr
MainActivity.MyOnTouchListener onTouchListener;
private OnSwipeTouchListener touchListener=new OnSwipeTouchListener(getActivity()) {
public void impelinfragment(){
//do what you want:D
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setting for on touch listener
((MainActivity)getActivity()).registerMyOnTouchListener(new MainActivity.MyOnTouchListener() {
@Override
public void onTouch(MotionEvent ev) {
LocalUtil.showToast("i got it ");
touchListener.onTouch(ev);
}
});
}
我使用此方法在片段中获取所有向右或向左滑动事件,而不会与页面中的其他元素冲突。与rax答案不同,我按照您的建议执行了相同的操作。谢谢我尝试将onTouchListener添加到OnCreateView()、onAttach()和onResume()中的主视图组中,但我得到了NullPointerException。。。我应该在哪里添加侦听器?这导致使用所有控件执行滑动侦听
//ontouch listenr
MainActivity.MyOnTouchListener onTouchListener;
private OnSwipeTouchListener touchListener=new OnSwipeTouchListener(getActivity()) {
public void impelinfragment(){
//do what you want:D
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setting for on touch listener
((MainActivity)getActivity()).registerMyOnTouchListener(new MainActivity.MyOnTouchListener() {
@Override
public void onTouch(MotionEvent ev) {
LocalUtil.showToast("i got it ");
touchListener.onTouch(ev);
}
});
}