2016-03-31 34 views
0

正常に動作するMediaPlayerがあり、停止ボタンは正常に機能します。ただし、ユーザーが音楽を再生せずにアクティビティに入り、停止ボタンを押すと、アプリがクラッシュします。曲が再生されると、ユーザーは希望する回数だけ停止ボタンを押すことができ、正常に動作します。どんな助けも素晴らしいだろう!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); 


    } 
} 
} 

答えて

2

これを試してみてください:

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

ありがとう、それは働きました!できるだけ早くあなたの答えを正確に記入します – user2407147

関連する問題