2012-06-04 22 views
5

Mam projekt, który jest oparty na hoście zakładki i wykorzystuje fragmentyandroid machnięcia nie wykryto wewnątrz fragmentu

na jednej karcie to haves się listFragment, użytkownik kliknie komórkę i udaje się do innego fragmentu,

stamtąd użytkownik może trzepnąć między fragmentami tej zakładce

mam pracy projekt aż pójdę do celi listFragment,

nie muszę wykryć swipes lewo lub w prawo, aby zmienić fragmenty odpowiednio,

tutaj mój kod:

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; 
    } 

} 

więc dlaczego mój gest rozpoznawania nie działa?

Dzięki,

+0

Czy to zadziałało? – user427969

Odpowiedz

1

Ten link wydaje się aleja: Android Fragment onCreateView with Gestures

Choć nie wdrożyć OnGestureListener do swojej klasy, ale raczej dołączyć clickListener na całej ich zdaniem, a następnie wywołać Listener Gest ten sposób, powinno nadal mieć zastosowanie do twojego fragmentu kodu.

Kolejną szybką naprawą może być zwrócenie onDown() jako false - może powinieneś zwrócić ją jako prawdziwą. Wiem, że Android nie rozpoznaje onUp(), jeśli onDown() nie wróci wcześniej niż true.