2014-12-02 27 views
1

我試圖取消在卡片刷卡,如果卡尚未處理。我這是在SWIPE_RIGHT取消滑動navigaton

gestureDetector.setBaseListener(new GestureDetector.BaseListener() { 

    @Override 
    public boolean onGesture(Gesture gesture) { 

     if (gesture == Gesture.TAP) { 

      openOptionsMenu(); 
      return true; 
     } else if (gesture == Gesture.TWO_TAP) { 

      runSpeechRecognition(); 
      return true; 
     } else if (gesture == Gesture.SWIPE_RIGHT) { 

      // do something on right (forward) swipe 
      CheckCards checkCard = mCheckCardsInfo.get(cardPosition); 
      if (checkCard.getStatus() == 1){ 

       return true; 
      }else{ 

       return false; 
      } 
     } else if (gesture == Gesture.SWIPE_LEFT) { 

      // do something on left (backwards) swipe 
      return true; 
     } else if (gesture == Gesture.SWIPE_DOWN) { 

      finish(); 
     } 
     return false; 
    } 
}); 

檢查我以爲返回false是足夠多的特殊指示(I調試器chcked,這就是所謂),但即使如此,卡是變化了的。我試圖找到任何方法,但沒有成功。也許我錯過了什麼。

回答

0

你錯誤很簡單!你說,「我認爲返回虛假就夠了」 - 如果我正確理解你,你想取消滑動導航。基本上,停止發生滑動導航。

你只是倒退了。從Google Developers page on GestureDetectors

公共布爾onMotionEvent(MotionEvent事件)

在API級別XE12流程運動事件,返回true,如果 事件應該始終被消耗或者是否檢測到的姿態。

返回:

反映觸摸事件是否被消耗

返回值的含義是所有的不同的方法相同。您返回true來消費該事件,而false則不消費該事件。換句話說,如果您想成爲唯一一個處理事件並且不允許在事件上發生默認操作的事件,則返回true以指示您使用該事件。

要解決您的問題,只需返回true,而不是false!