проблема с инструкциями if / else и switch - PullRequest
0 голосов
/ 13 октября 2010

следующий код должен обрабатывать события ACTION_DOWN и ACTION_UP для кнопки с именем clash. Идея состоит в том, что однажды 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 Ответ

3 голосов
/ 14 октября 2010
//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()? -> }); 

Просто мысль.

...