2012-06-04 5 views
5

Ho un progetto che si basa su un host scheda e utilizza frammenti,colpo android non rilevato all'interno di un frammento

su una linguetta esso abbienti un listFragment, utente tocca una cella e va ad un frammento diverso,

da lì utente può scorrere tra frammenti di tale scheda,

aver il progetto di lavoro fino a che non vada alla cella del listFragment,

ci devo rilevare i colpi sinistra o destra per modificare i frammenti di conseguenza,

qui il mio codice:

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

} 

così perché è il mio gesto riconoscitore non funziona?

grazie,

+0

Questo ha funzionato per te? – user427969

risposta

1

Questo link sembra al caso vostro: Android Fragment onCreateView with Gestures

Anche se non implementano OnGestureListener nella loro classe, ma piuttosto attribuiscono un clickListener per tutta la loro vista e quindi innescare il gesto Listener in quel modo, dovrebbe ancora essere applicato al tuo snippet di codice.

Un'altra correzione rapida può essere che si restituisce onDown() come falso - forse si dovrebbe restituirlo come vero. So che Android non riconoscerà uno onUp() se onDown() non restituisce true precedente.