2012-06-04 12 views
5

Tengo un proyecto que se basa en un anfitrión pestaña y utiliza fragmentos,swipe androide no se detecta dentro de un fragmento de

en una pestaña que haves un listFragment, usuario toca una célula y se va a un fragmento diferente,

a partir de ahí el usuario puede deslizar entre los fragmentos de esa pestaña,

tengo el proyecto de trabajo hasta que vaya a la celda de la listFragment,

no necesito para detectar los golpes de izquierda o derecha para cambiar los fragmentos en consecuencia,

aquí mi código:

public class PrepareSkin extends Fragment implements OnGestureListener{ 

     private static final int SWIPE_MIN_DISTANCE = 120; 
     private static final int SWIPE_MAX_OFF_PATH = 250; 
     private static final int SWIPE_THRESHOLD_VELOCITY = 200; 

     private GestureDetector gestureScanner; 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 


     gestureScanner = new GestureDetector(this); 


     // TODO Auto-generated method stub 
     View myFragmentView = inflater.inflate(R.layout.prepare_skin, container, false); 

     Log.i("Mirko", "CREATO <<"); 


     return myFragmentView; 
    } 

     public boolean onTouchEvent(MotionEvent me) 
     { 
     return gestureScanner.onTouchEvent(me); 
     } 

    @Override 
    public boolean onDown(MotionEvent e) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
      float velocityY) { 
     try { 
       if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
        return false; 
       // right to left swipe 
       if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        Log.i("Mirko", "LEFTERS <<"); 


       } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        Log.i("Mirko", "rIGTHERS >>"); 

       } 
       else if(e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       } else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       } 
      } catch (Exception e) { 
       // nothing 
      } 

        return true; 
    } 

    @Override 
    public void onLongPress(MotionEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, 
      float distanceY) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public void onShowPress(MotionEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public boolean onSingleTapUp(MotionEvent e) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

} 

¿Por qué es mi gesto reconocedor no funciona?

gracias,

+0

¿Esto funcionó para usted? – user427969

Respuesta

1

Este enlace parece hasta su callejón: Android Fragment onCreateView with Gestures

A pesar de que no implementan OnGestureListener en su clase, sino más bien adjuntar un clickListener a toda su punto de vista y luego desencadenan el oyente Gesto de esa manera, aún debe aplicarse a su fragmento de código.

Otra solución rápida puede ser que devuelva onDown() como falso; quizás deba devolverlo como verdadero. Sé que Android no reconocerá un onUp() si onDown() no devuelve true antes.

Cuestiones relacionadas