【问题标题】:When music doesn't Start, Stop button crashing the project当音乐没有开始时,停止按钮使项目崩溃
【发布时间】:2014-12-21 23:57:16
【问题描述】:

当我按下下一个按钮时,我想进入下一个布局并停止播放音乐。 如果我按下播放按钮并按下下一个按钮,应用程序正在工作。

但是,如果没有播放音乐并且我按下下一个布局按钮,应用程序就会崩溃,因为即使没有播放音乐,我的代码也会尝试停止。我能做什么?

 package com.gamedom.relaxingmusic;

 import gif.decoder.GifRun;
 import android.app.Activity;
 import android.content.Intent;
 import android.media.MediaPlayer;
 import android.os.Bundle;
 import android.view.SurfaceView;
 import android.view.View;
 import android.widget.ImageButton;


public class Music1 extends Activity {

    public static MediaPlayer mp1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.music1);

        final ImageButton Start1 =(ImageButton) findViewById(R.id.btnStart1);
        final ImageButton Stop1 =(ImageButton) findViewById(R.id.btnStop1);

        ImageButton SOL1 =(ImageButton) findViewById(R.id.btnSol1);
        ImageButton SAG1 =(ImageButton) findViewById(R.id.btnSag1);     

        Stop1.setVisibility(View.INVISIBLE);

        Start1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                mp1=MediaPlayer.create(Music1.this, R.raw.firefurnace);
                mp1.start();
                mp1.setLooping(true);

                Start1.setVisibility(View.INVISIBLE);
                Stop1.setVisibility(View.VISIBLE);
            }
        });

        Stop1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            mp1.stop();
            mp1.release();
            Stop1.setVisibility(View.INVISIBLE);
            Start1.setVisibility(View.VISIBLE);
        }
    });

    //////NEXT LAYOUT BUTTON \\\\\\\\\

    SAG1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            if (mp1.isPlaying()) { 
                mp1.stop(); 
            }

            startActivity(new Intent("android.intent.action.MUSIC2"));

        }
    });

    ////// BACK LAYOUt BUTTON \\\\\\\\\

    SOL1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            if (mp1.isPlaying()) { 
                mp1.stop(); 
            }

             startActivity(new Intent("android.intent.action.MUSIC4"));
        }
    });
}

问题来了

SOL1.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        //It try to stoping the music but it's already stopped program is crashes
        if (mp1.isPlaying()) { 
            mp1.stop(); 
        }

        startActivity(new Intent("android.intent.action.MUSIC4"));
    }
});

【问题讨论】:

  • 您知道错误发生在代码中的哪个位置...任何错误输出或代码中的陷阱可以提供帮助吗?
  • “我能做什么?” - 在检查它是否正在播放之前,请确保您的 MediaPlayer 不为空。
  • 当我按下 SAG1 按钮时。这是下一个布局按钮。程序崩溃了。

标签: android media-player


【解决方案1】:

看起来您在 onClick 中初始化了媒体播放器对象。因此,如果未触发该事件,您的 mp1 变量将为空。我相信你会收到NullPointerException

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多