好的我正在制作一个简单的测验琐事应用程序,用户可以在其中收听音频并猜测歌曲。我面临的问题是,如果用户单击“下一步”按钮而未列出音频,则应用程序崩溃,而不应该崩溃。如果用户收听音频并按暂停,然后单击“下一步”按钮,它将再次崩溃。只有当用户正在收听音频选择选项并单击“下一步”而不单击暂停按钮时,它才能正常工作。 这是代码
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 :(得分:0)
不要将下面的代码放在方法/函数
中v1.setOnClickListener(new View.OnClickList)
{ ........
}
答案 1 :(得分:0)
当音频暂停时,mp将为空。所以当你点击下一个按钮
mp.stop(); //此代码将提供异常
所以在停止之前检查实例是否为null:
if(mp!= null){
mp.stop(); //和其他代码
}