この問題は私を壁に追いやっています。私は何か間違ったことをしていると確信していますが、それを理解することはできません。
線形レイアウト内に含まれる多数の同一の複合ビュー オブジェクトの TextView にアタッチする静的な OnTouchListener があります。このリスナーはヘルパー クラスにあります。
public static View.OnTouchListener getValueTouchListener() {
return new View.OnTouchListener() {
private int lastY;
private int lastX;
@Override
public boolean onTouch(View v, MotionEvent event) {
TextView view = (TextView)v;
int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
view.setBackgroundResource(R.drawable.cog_pressed);
lastY = (int)event.getY();
lastX = (int)event.getX();
return true;
case MotionEvent.ACTION_MOVE:
//calc size of movement
int deltaY = lastY - (int)event.getY();
int deltaX = lastX - (int)event.getX();
// pass gesture up to parent if it's a big x movement - assumes user wishes to scroll parent
if (Math.abs(deltaX) > TOUCH_SLOP *2) {
return false;
}
lastX = (int)event.getX();
//process movement if larger than a touch slop
if (StrictMath.abs(deltaY) > TOUCH_SLOP) {
// reset last touch position
lastY = (int)event.getY();
//get direction of movement
int dir = (deltaY < 0)? -1 : 1;
//change index if within min and max limits
int min = (view.getTag() == Chainring.KEY)? Chainring.MIN_COG : Sprocket.MIN_COG;
int max = (view.getTag() == Chainring.KEY)? Chainring.MAX_COG : Sprocket.MAX_COG;
int value = Integer.valueOf(view.getText().toString());
if ((dir == -1 && value > min) || (dir == 1 && value < max)) {
value = value + dir;
view.setText(String.valueOf(value));
view.playSoundEffect(SoundEffectConstants.CLICK);
}
}
return true;
case MotionEvent.ACTION_UP:
view.setBackgroundResource(R.drawable.cog_unpressed);
return true;
case MotionEvent.ACTION_CANCEL:
view.setBackgroundResource(R.drawable.cog_unpressed);
return false;
default:
return false;
}
}
};
}
線形レイアウトを拡張するクラスで、このリスナーを TextView に接続します
mValueTextView.setOnTouchListener(CogPickerHelper.getValueTouchListener());
私の問題は、メソッドが ACTION_DOWN、ACTION_UP、および ACTION-MOVE の場合に return コマンドを実行していないように見えることです。たとえば、ACTION_DOWN の場合、コードは return コマンドまで実行されますが、その後、デフォルトのケースに直接進み、false を返します。Logcat はアクションを ACTION-DOWN として報告しますが。
戻りコマンドにブレークポイントを設定しようとすると、IntelliJ は「クラス com.amb.GearBuddyV2.views.CogPickerHelper$2 の行 X に実行可能コードが見つかりません」
ここで私が間違っていることを誰かが知っていますか?