0

以下case语句正在跳过:

switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    ButtonFeedback.vibrate(20);
    Log.d("ClientActivity", "Down");

    case MotionEvent.ACTION_UP:
    ButtonFeedback.vibrate(20);
    Log.d("ClientActivity", "up");

日志中的结果是“向下”“向上”触摸并按住按钮时应该只有“向下”,当不触摸按钮时只有“向上”,这是正确的。

这里有什么遗漏吗?

4

3 回答 3

4

您需要添加中断语句。否则下一个案例也将被执行。

switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        ButtonFeedback.vibrate(20);
        Log.d("ClientActivity", "Down");
        break; // you forgot this break here
    case MotionEvent.ACTION_UP:
        ButtonFeedback.vibrate(20);
        Log.d("ClientActivity", "up");
        break;
于 2013-04-02T19:02:07.580 回答
3

你错过了break

案件结束后打电话休息

IE

 switch(event.getAction()) {

     case MotionEvent.ACTION_DOWN:
       ButtonFeedback.vibrate(20);
  Log.d("ClientActivity", "Down");
    break;


         case MotionEvent.ACTION_UP:
           ButtonFeedback.vibrate(20);
  Log.d("ClientActivity", "up");
      break;
于 2013-04-02T19:01:35.453 回答
2

尝试:

switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
    ButtonFeedback.vibrate(20);
    Log.d("ClientActivity", "Down");
break;
    case MotionEvent.ACTION_UP:
    ButtonFeedback.vibrate(20);
break;

通过省略该break;语句,您创建了一个fallthrough switch case,当 ACTION_DOWN 发生时,您的两个 case 都会执行。

于 2013-04-02T19:02:14.840 回答