if / else和switch语句的问题

时间:2010-10-13 19:46:14

标签: java if-statement switch-statement

以下代码用于处理名为clash的按钮的ACTION_DOWN和ACTION_UP事件。我们的想法是if if / else确定onTouch事件是由冲突引起的,然后switch语句根据操作确定要执行的操作。我不知道问题是switch语句没有返回true并且可能与问题有关。当我添加一个返回时,eclipse说代码是无法访问的,我不明白。我的印象是你不能在没有休息的情况下突破开关。

实际发生的是第一个声音会循环,但是当按钮被释放时代码似乎永远不会检测到动作,因此声音会永远播放。任何帮助将不胜感激。

 public boolean onTouch(View v, MotionEvent event) {
 MediaPlayer mp = MediaPlayer.create(getBaseContext(), R.raw.clash);
 if (v.getId() == R.id.clash){

 switch (event.getAction()){

 case MotionEvent.ACTION_DOWN:
  mp.setLooping(true);
  mp.start();
   break;

 case MotionEvent.ACTION_UP:
  mp.pause();
  break;
 }

}
return true;
}
   });

1 个答案:

答案 0 :(得分:3)

//Add the following line in the code before your setOnTouchListener()
MediaPlayer mp;

public boolean onTouch(View v, MotionEvent event) { 

    if (v.getId() == R.id.clash){ 

        switch (event.getAction()) { 

        case MotionEvent.ACTION_DOWN: 
            mp = MediaPlayer.create(getBaseContext(), R.raw.clash); 
            mp.setLooping(true); 
            mp.start(); 
            break; 

        case MotionEvent.ACTION_UP: 
            if(mp != null) 
            {
                mp.pause(); 
                mp.release();
            }
            break; 
        } 
    } 
} 

// I'm assuming this was from the onTouchListener()? -> }); 

只是一个想法。