1

シナリオは、たとえばユーザーがActivity Aを longclick することです。 ユーザーが指を離していない間 、lonkclickのアクティビティ Aがアクティビティ Bを開始します。アクティビティ Bは、ユーザーがまだ画面に触れていることを検出する必要があります。

私はそれを達成しようとしました...

活動A

ButtonA.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            startActivityForResult(new Intent(ActivityA.this, ActivityB.class), REQUEST_1);
            return true;
        }
    });

アクティビティ Bで...

ButtonB.setOnTouchListener(new OnTouchListener() {
        int oldEvent = -1;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (oldEvent != event.getAction()) {
                oldEvent = event.getAction();
                Toast.makeText(ActivityB.this, event.getAction() + "", Toast.LENGTH_SHORT).show();
            }
            return true;
        }
    });

たとえば、ButtonA と ButtonB は画面上の同じ位置にあります。絶対/

しかし、 ActivityBが開始されたとき、 ButtonBイベントを受け取りませんでした。ACTION_DOWN でも ACTION_UP でもなく、他でもない。通常、ButtonB でACTION_UPを受信したい:-)

4

2 に答える 2

2

アクティビティを開始したときに指がすでに画面上にある場合、ACTION_DOWN は取得されません。また、ACTION_DOWN がまだなかったので、ACTION_UP も得られません。たぶん、あなたはこれをそのようにする独自の理由を持っているかもしれませんが、一般的にユーザーはアクションをキャンセルできるはずなので、ボタンをクリックすると反応するはずです(同じオブジェクトでDOWNとUP)。アクションが DOWN で発生した場合、ユーザーがそれをキャンセルする方法はありません (つまり、オブジェクトの外に指を移動して持ち上げるなど)。

于 2012-11-26T10:06:27.137 に答える
1

タスクはFragmentActivityを使用して解決されます。

于 2012-12-21T14:30:40.837 に答える