如果未单击“播放”按钮,应用程序崩溃

时间:2015-09-01 10:42:58

标签: android

好的我正在制作一个简单的测验琐事应用程序,用户可以在其中收听音频并猜测歌曲。我面临的问题是,如果用户单击“下一步”按钮而未列出音频,则应用程序崩溃,而不应该崩溃。如果用户收听音频并按暂停,然后单击“下一步”按钮,它将再次崩溃。只有当用户正在收听音频选择选项并单击“下一步”而不单击暂停按钮时,它才能正常工作。 这是代码

 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();
            }
        }

2 个答案:

答案 0 :(得分:0)

不要将下面的代码放在方法/函数

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

答案 1 :(得分:0)

当音频暂停时,mp将为空。所以当你点击下一个按钮

mp.stop(); //此代码将提供异常

所以在停止之前检查实例是否为null:

if(mp!= null){

mp.stop(); //和其他代码

}