【问题标题】:MediaPlayer Stop Button Crashes AppMediaPlayer 停止按钮使应用程序崩溃
【发布时间】:2016-03-31 22:22:21
【问题描述】:

我有一个可以正常工作的 MediaPlayer,并且停止按钮也可以正常工作。但是,如果用户进入活动并按下停止按钮而不播放任何音乐,应用程序就会崩溃。如果播放了一首歌曲,用户可以根据需要多次按下停止按钮,并且效果很好。任何帮助都会很棒!

public class Website extends AppCompatActivity {

private MediaPlayer mp;

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

    GridView gridView = (GridView) findViewById(R.id.gridview);
    gridView.setAdapter(new MyAdapter(this));
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);


    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {


        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {

            switch (position) {
                case 0:
                    stopPlaying();
                    mp = MediaPlayer.create(Website.this, R.raw.sound1);
                    mp.start();

                    // This will make  sound
                    break;
                case 1:
                    stopPlaying();
                    mp = MediaPlayer.create(Website.this, R.raw.sound2);
                    mp.start();
                    break;
                case 2:
                    stopPlaying();
                    mp = MediaPlayer.create(Website.this, R.raw.sound3);
                    mp.start();
                    break;
                case 3:
                    stopPlaying();
                    mp = MediaPlayer.create(Website.this, R.raw.sound4);
                    mp.start();
                    break;
                case 4:
                    stopPlaying();
                    mp = MediaPlayer.create(Website.this, R.raw.sound5);
                    mp.start();
                    break;
                case 5:
                    Intent i = new Intent(Intent.ACTION_VIEW,
                            Uri.parse("https://play.google.com/store/music/"));
                    startActivity(i);
                    break;

            }

        }
    });
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mp.isPlaying()) {
                mp.pause();
                mp.seekTo(0);
            }
        }
    });
}


private void stopPlaying() {
    if (mp != null) {
        mp.stop();
        mp.release();
        mp = null;
    }
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    if(mp!= null)
    {
        mp.stop();
        mp=null;
    }
    this.finish();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            if(mp!= null)
            {
                mp.stop();
                mp=null;
            }
            return true;
        default:
            return super.onOptionsItemSelected(item);


    }
}
}

【问题讨论】:

    标签: android android-mediaplayer


    【解决方案1】:

    试试这个:

    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mp!=null && mp.isPlaying()) {
                mp.pause();
                mp.seekTo(0);
            }
        }
    });
    

    【讨论】:

    • 谢谢,成功了!我会尽快将您的答案标记为正确
    猜你喜欢
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多