1

MotionEvent.ACTION_MOVE & MotionEvent.ACTION_UP イベントの検出に問題があります。ボタンを押したままにすると、関連付けられた値が自動的に減少するようにする予定ですが、UP イベントを検出できないため、コーディングでその時点に達していません。

for (int position = 0; position < mListItems.size(); position++) {
    LayoutInflater inflater = getLayoutInflater();
    PilotSkillRow row = (PilotSkillRow) inflater.inflate(R.layout.pilotskillrow, mSkillListView, false);
    Button skillminus = (Button) row.findViewById(R.id.skillminus);
    skillminus.setOnTouchListener(new SkillButtonTouchListener(position, false));
    ....
}

オン タッチ イベントで true を返すことは、ACTION_MOVE や ACTION_UP などの後のオンタッチ イベントが発生することを意味することを理解しています。

private class SkillButtonTouchListener implements OnTouchListener {

    public SkillButtonTouchListener(int pos, boolean plus) {
         ...
    }

    public boolean onTouch(View view, MotionEvent motionevent) {
        int action = motionevent.getActionMasked();

        switch (action)
        {
            case MotionEvent.ACTION_MOVE:
                Log.e("a", "MOVE EVENT");
                ....
                return true;

            case MotionEvent.ACTION_UP:
                Log.e("a", "UP EVENT");
                ....
                break;

            case MotionEvent.ACTION_DOWN:
                Log.e("a", "DOWN EVENT");
                ....
                return true;
            default:
                break;
            }
            return false;
        }
    }

ただし、コードを実行すると、DOWN は表示されますが、MOVE と UP EVENTS は表示されません。膨張したレイアウトを持っているという事実に関連している可能性がありますか?

誰が私が間違っているのか考えていますか?

更新: Android デバッガーを使用してボタンに接続し、何が起こっているかを確認すると、ボタンを押した後にステップスルーすると UP イベントが発生します。おそらく、UP イベントを消費する別のプロセスがあるためでしょうか?

更新 2: 問題は、膨張したレイアウト内のテキストビューが更新を拒否することです。アダプターで無効化イベントを実行すると、現在処理中のタッチ イベントが停止します (エラーなし)。アダプターを必要とせずに手動で更新できる別のテキストビューがありますが、これは問題を引き起こしません。したがって、RelativeLayout に固有の問題のようです。ACTION_UP イベント中にのみデータを無効にする回避策がありますが、その場でテキストビューを更新したいと思います。

4

0 に答える 0