è necessario dispatchTouchEvent nella vostra attività genitore come quello
aggiungere questo codice per l'attività genitore:
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);
}
OnSwipeTouchListener:
public class OnSwipeTouchListener{
private final GestureDetector gestureDetector;
public OnSwipeTouchListener (Context ctx){
gestureDetector = new GestureDetector(ctx, new GestureListener());
}
private final class GestureListener extends SimpleOnGestureListener {
//override touch methode like ondown ...
//and call the impelinfragment()
}
public void impelinfragment(){
//this method impelment in fragment
}
//by calling this mehod pass touch to detector
public void onTouch(MotionEvent event) {
gestureDetector.onTouchEvent(event);
}
e aggiungere questo codice a frammentarsi vi piace Dispach tocco in esso:
//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);
}
});
}
io uso questo metodo per ottenere tutto strisciare per evento destra o sinistra nel frammento senza entrare in conflitto con altri elem nella pagina .unlike risposta rax
fonte
2015-07-20 14:15:15
Ho fatto lo stesso come il tuo suggerimento. Grazie! – TheDevMan
Ho provato ad aggiungere onTouchListener al mio viewgroup principale in OnCreateView(), onAttach() e onResume(), ma sto ricevendo NullPointerException ... Dove dovrei aggiungere il listener? –