2015-11-29 5 views
0

У меня есть медиапланер в моих настройках, который воспроизводит песню, когда включена кнопка переключения. Он отлично работает, и когда действие меняется, музыка продолжает воспроизводиться, и это то, что я хочу. Проблема в том, что когда я снова вернусь к активности настроек, кнопка переключения отключена и один раз щелкнет, она запустит новый медиаплеер, который играет рядом с текущим. В любом случае, чтобы он помнил, что оригинальный медиаплеер включен?Сохранить состояние медиапланера между действиями

public class Settings extends AppCompatActivity { 
public MediaPlayer mp = null; 
private SeekBar volumeSeekbar = null; 
private AudioManager audioManager = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_settings); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    setVolumeControlStream(AudioManager.STREAM_MUSIC); 
    initControls(); 


    Button b = (Button) findViewById(R.id.toggleButton); 
    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Spinner spinner = (Spinner) findViewById(R.id.spinner); 
      String text = spinner.getSelectedItem().toString(); 
      if (mp == null) { 
       int song = getResources().getIdentifier(text, "raw", "com.example.dan14.memorygame"); 
       mp = MediaPlayer.create(Settings.this, song); 
       mp.start(); 
      } else { 
       mp.stop(); 
       mp = null; 
      } 
     } 
    }); 
} 

ответ

1

В моей идее ваш код должен работать нормально, по крайней мере, большую часть времени.

Попробуйте public static MediaPlayer mp = null;

Update: Обычно, когда между деятельностью свойство требуется, таких как воспроизведение музыки, вы должны попробовать Service, одну важную особенность Android. По крайней мере, вы должны узнать об этом и решить, что делать. Вот полный учебник от Google. http://developer.android.com/guide/topics/media/mediaplayer.html

+0

спасибо !! Это работает, но я просто должен сохранить состояние кнопки, теперь она меняет направление, когда я перезапускаю второе действие. например, я нажимаю кнопку «Воспроизвести», а затем меняю активность, но музыка остается на том, что хорошо, но как только я вернусь к активности настроек, кнопка отключена, но после нажатия она говорит, но останавливает музыку! – Haldamir

+0

@ Haldamir После 'Button b = (Button) findViewById (R.id.toggleButton);', измените состояние своей кнопки в соответствии с 'mp == null'. – lin

+0

Спасибо! Я просто установил состояние кнопки, используя onPause и onResume :) – Haldamir

0

Перемещение кнопки из onCreate и поместить его в качестве члена активности.

Смежные вопросы