1

场景是例如用户长按Activity A。 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_UP,因为还没有 ACTION_DOWN。也许你有自己的理由这样做,但一般用户应该能够取消操作,因此按钮应该在点击时做出反应(在同一个对象上向下然后向上)。如果动作发生在 DOWN 上,那么用户就无法取消它(即通过将手指移到对象外并抬起它)。

于 2012-11-26T10:06:27.137 回答
1

该任务是使用 FragmentActivity 解决的。

于 2012-12-21T14:30:40.837 回答