2015-11-29 233 views
0

我的设置活动中有一个mediaplayer,当切换按钮打开时播放一首歌曲。它工作正常,当活动改变时,音乐继续播放,这是我想要的。问题是,当我再次回到设置活动时,切换按钮被设置为关闭,并且一旦点击它就启动与当前播放器一起播放的新媒体播放器。无论如何要记住原始媒体播放器已打开?在活动之间保存mediaplayer状态

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

在我的想法中,你的代码应该至少在大多数情况下都能正常工作。

尝试 ​​

更新: 通常,当需要活动间的财产,如音乐播放,你应该尝试服务,一个重要的Android功能。至少你应该知道它并决定做什么。这里有一个来自Google的综合教程。 http://developer.android.com/guide/topics/media/mediaplayer.html

+0

谢谢!这有效,但我只需要保存按钮的状态,现在让我们在重新启动第二个活动时反转。例如,我点击播放,然后改变音乐保持在哪个活动状态,但是一旦我回到设置活动中,该按钮被设置为关闭,但是一旦点击了它,它就会启动但停止音乐! – Haldamir

+0

@Haldamir在按钮b =(按钮)之后findViewById(R.id.toggleButton);',根据'mp == null'改变你的按钮状态。 – lin

+0

谢谢!我只是使用onPause和onResume设置按钮状态:) – Haldamir

0

移动按钮onCreate的,并把它作为活动成员。