2016-03-31 7 views
0

Ich habe einen MediaPlayer, der funktioniert und der Stop Button funktioniert einwandfrei. Wenn der Benutzer jedoch in die Aktivität einsteigt und die Stopp-Taste drückt, ohne Musik abzuspielen, stürzt die App ab. Wenn ein Lied gespielt wird, kann der Benutzer die Stopp-Taste so oft drücken, wie er es wünscht, und es funktioniert gut. Jede Hilfe wäre großartig!MediaPlayer Stop Button stürzt ab App

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


    } 
} 
} 

Antwort

2

Try this:

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

Thankyou, es funktionierte! Wird deine Antwort so schnell wie möglich korrigieren – user2407147