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

ケース後のコール ブレーク

すなわち

 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;

ステートメントを省略することで、 ACTION_DOWNbreak;が発生したときに両方のケースが実行されるフォールスルー スイッチ ケースを作成しました。

于 2013-04-02T19:02:14.840 に答える