Comment mettre en œuvre onTouchEvent avec un FragmentActivity

Ma Question: Est-il un travail autour de l'utilisation d'un onTouchEvent dans un FragmentActivity?

Ma Situation: je suis en train d'écrire une simple lampe de poche app et j'ai un FragmentActivity où un utilisateur peut glisser entre les couleurs (la totalité de l'écran est d'une seule couleur. Cette application est pour l'amélioration personnelle). Je veux être capable de faire un onLongPress cas pour les options, un onDoubleTap événement pour cacher la barre de navigation, et le plus important un événement tactile pour contrôler la luminosité de l'application (je veux permettre à l'utilisateur de défilement vers le haut et vers le bas pour les variations de luminosité, toutes les idées sont les bienvenus ici! est le onFling événement bon pour cela?)

Ce que j'ai essayé: j'ai un GestureDetector avec ma mise en œuvre d'un SimpleOnGestureListener. Je remplace la onTouchEvent dans le FragmentActivity, mais j'ai juste trouvé que cette méthode n'est jamais appelé dans un FragmentActivity (j'ai aussi testé avec un Log.print dans la méthode et il n'est jamais appelé). Est-il un travail? Merci!

Saillants Code:

MainActivity:

public class MainActivity extends FragmentActivity {

  private GestureDetector gestureDetector;
  private FragmentPagerAdapter mAdapter;

  /**
   * Called when the activity is first created.
   */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    gestureDetector = new GestureDetector(getApplicationContext(), new MyGestureListener(getWindow()));

    mAdapter = new ColorFragmentAdapter(getSupportFragmentManager(), getDefaultColorList());
    ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager);
    pager.setAdapter(mAdapter);
    pager.setCurrentItem(Math.round(mAdapter.getCount() / 2)); //Set current fragment to middle fragment
  }

  @Override
  public boolean onTouchEvent(MotionEvent event) {
    print("Sending touch event to gestureDetector.");
    //This line is never run.
    return gestureDetector.onTouchEvent(event);
  }

  /**
   * Prints the given object to the log with the debug priority with the tag FLASHLIGHT
   *
   * @param object
   */
  public static void print(Object object) {
    Log.println(Log.DEBUG, "FLASHLIGHT", object.toString());
  }
}

MyGestureListener :

public class MyGestureListener extends SimpleOnGestureListener {

  private final Window window;

  public MyGestureListener(Window window) {
    super();
    this.window = window;
  }

  @Override
  public void onLongPress(MotionEvent e) {
    //onLongPress code
  }

  @Override
  public boolean onDoubleTap(MotionEvent e) {
    //onDoubleTap code
  }

  @Override
  public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    //onFling cod
  }
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  >
  <android.support.v4.view.ViewPager
        android:id="@+android:id/viewpager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
</LinearLayout>

Je ne pense pas que vous auriez besoin de rien d'autre pour répondre à la question, mais laissez-moi savoir si vous le faites.

Pouvez-vous s'il vous plaît partager le code et la mise en page pour le projet?
voir mise à jour.
Le manque de toucher les événements à partir de l'activité sont les plus susceptibles happeing en raison de la ViewPager et/ou les fragments de la ViewPager. Le onTouchEvent méthode de la Activity sera appelée que si le point de vue à elle n'a pas à gérer l'événement tactile. Aussi, si je ne me trompe pas, vous devez également mettre en œuvre onDown dans le SimpleGestureListener de retour true.
Est-il un moyen de surmonter cette @Luksprog?
Avez-vous également de mettre en œuvre la onDown méthode dans le geste auditeur? Qu'avez-vous dans ces fragments? Tous les événements tactiles auditeurs de là-bas?

OriginalL'auteur kentcdodds | 2012-10-29