0

のジェスチャーリスナーで構成されたレイアウトがありますOnTouchEvent()。レイアウトにはリストビューが含まれており、ジェスチャを使用してリストビューの行 ID を取得しています。私は次のコードを持っています -

 itemsList.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View arg0, MotionEvent evt) {
            // TODO Auto-generated method stub
            //
            int action = evt.getAction();
            final String DEBUG_TAG = "DEBUG";
            detector.onTouchEvent(evt);
            switch(action) {
                case (MotionEvent.ACTION_DOWN) :
                    Log.d(DEBUG_TAG,"Action was DOWN");
                    return true;
                case (MotionEvent.ACTION_MOVE) :
                    Log.d(DEBUG_TAG,"Action was MOVE");
                    return true;
                case (MotionEvent.ACTION_UP) :
                    Log.d(DEBUG_TAG,"Action was UP");
                    return true;
                case (MotionEvent.ACTION_CANCEL) :
                    Log.d(DEBUG_TAG,"Action was CANCEL");
                    return true;
                case (MotionEvent.ACTION_OUTSIDE) :
                    Log.d(DEBUG_TAG,"Movement occurred outside bounds " +
                            "of current screen element");
                    return true;    
            } 

            return false;
        }

    });

検出器は GestureDetector インスタンスです。私は基本的に、リストビューの行で左にスワイプまたは右にスワイプするだけのアクションを使用しています。

左/右にスワイプするたびに、Logcat に 3 つのデバッグ メッセージが表示されます (情報または確認事項??)。

D/InputEventConsistencyVerifier(24700): TouchEvent: ACTION_MOVE contained 1 pointers 
but there are currently 0 pointers down.

D/InputEventConsistencyVerifier(24700):   in android.view.GestureDetector@b50cf9b0

D/InputEventConsistencyVerifier(23596):   0: sent at 37751425150760, 
MotionEvent { action=ACTION_MOVE, id[0]=0, x[0]=39.00721, y[0]=28.526703, toolType[0]=TOOL_TYPE_FINGER, 
buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=37751425, 
downTime=37751133, deviceId=0, source=0x1002 }

OnTouchListener からの 4 つのデバッグ メッセージもあります -

Action was ACTION MOVE
Action was ACTION MOVE
Action was ACTION MOVE
Action was ACTION UP

これは、私が信じているスワイプの動きに対応しています。

メインのアクティビティ クラスが拡張OnGestureListenerされているため、onFling などの実装されていないメソッドがあります。

問題は、onFling メソッドがACTION UPイベントの後にのみ呼び出され、それが発生すると、メソッド mevt1 に渡される引数が null であるのに対し、mevt2 は null ではないことです。(デフォルトの動作?)

onFling(MotionEvent mevt1, MotionEvent mevt2, float velX, float velY)

このメソッドは mevt1 を使用するため、nullpointexception が発生します。

からのデバッグ メッセージにInputEventConsistencyVerifier問題があるかどうか、また、これが問題であるかどうかを誰かが知っているかどうかを知りたいですか?

4

1 に答える 1

0

あなたは電話しなければなりません

detector.onTouchEvent(evt)

ACTION_MOVE だけでなく、すべてのアクションに対して

于 2013-04-25T09:58:58.940 に答える