2015-09-01 3 views
0

Хорошо. Я делаю простое приложение для мелочей викторины, в котором пользователь слушает звук и угадывает песню. Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь нажимает кнопку «Далее», не указывая на звук, приложение отключается, что не должно. и если пользователь прослушивает звук и нажимает паузу, а затем нажимает кнопку «Далее», он снова вылетает. Он работает хорошо, только когда пользователь прослушивает аудио, выберите опцию и нажмите «Далее», не нажимая кнопку паузы. Вот кодПриложение вылетает, если кнопка «играть» не нажата.

private void setQuestionView() 
{ 
    imagebutton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if(mp==null) { 
       mp = MediaPlayer.create(Lylevel3.this, R.raw.q11); 
       mp.start(); 
       imagebutton.setImageResource(R.drawable.pause); 
      } 
      else{ 
       mp.pause(); 
       mp = null; 
       imagebutton.setImageResource(R.drawable.play); 
      } 
     } 
    }); 

    if (qid == 1) { 
     imagebutton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if(mp==null) { 
        mp = MediaPlayer.create(Lylevel3.this, R.raw.q12); 
        mp.start(); 
        imagebutton.setImageResource(R.drawable.pause); 
       } 
       else{ 
        mp.pause(); 
        mp = null; 
        imagebutton.setImageResource(R.drawable.play); 
       } 

      } 
     }); 
    } 

Есть 10 уровней, и каждый уровень имеет 5 вопросов. Следующая кнопка Код

setQuestionView(); 

    butNext.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mp.stop(); 
      mp = null; 
      imagebutton.setImageResource(R.drawable.play); 
      RadioGroup grp=(RadioGroup)findViewById(R.id.radioGroup1); 
      RadioButton answer=(RadioButton)findViewById(grp.getCheckedRadioButtonId()); 
      Log.d("yourans", currentQ.getANSWER() + " " + answer.getText()); 

      if(answer.getText().equals(currentQ.getANSWER())) 
      { 
       score++; 
       Log.d("score", "Your score" + score); 
      } 

      if(qid<5){ 
       currentQ=quesList.get(qid); 
       setQuestionView(); 
      }else{ 
       Intent intent = new Intent(Lylevel3.this,      ResultActivity.class); 
       Bundle b = new Bundle(); 
       b.putInt("score", score); //Your score 
       intent.putExtras(b); //Put your score to your next Intent 
       startActivity(intent); 
       finish(); 
      } 
     } 
+0

показать ошибки LogCat – Rajesh

+1

Также там вы устанавливаете v1.setOnClickListener дважды в некоторых случаях причина? –

+1

Вы можете использовать логические флаги, чтобы проверить, полностью ли он воспроизводит музыку, и если у вас есть, то вы можете установить его на true и наоборот для другого условия. – Kottary

ответ

0

Когда звук приостановленного тр будет нулевым. Поэтому, когда вы нажимаете на следующую кнопку

mp.stop(); // Этот код дает исключение,

так что проверить перед остановкой, является ли данный экземпляр является пустым или нет:

если (! Пл = NULL) {

mp.stop(); // и остальная часть кода

}

+0

Спасибо вам большое спасибо! он работал: D – hyeri

0

Не помещайте ниже код внутри метода/функции

v1.setOnClickListener(new View.OnClickList) 
{ ........ 
} 
+0

есть ли причина? Я спрашиваю, так как эта функция отображает вопросы, и я не знаю, где использовать setOnClickListener, кроме того, что – hyeri

+0

Set Нажмите прослушиватель на кнопках в onCreate(). Создайте метод, который обрабатывает песни, и когда пользователь нажимает следующий, например. метод playSong называется – Want2bExpert

Смежные вопросы