2

我在共享首选项中有一个想要的复选框:当复选框为真时,这首歌在activity1. 打开列表项时,刚刚开始activity1。在activity1我有一个检查 sharepreferences 并播放歌曲的课程,这样:

打开每个列表项时播放歌曲,打开每个列表项时播放多首歌曲。如何在此活动中只播放一首歌曲。

它要求每个列表项:

protected void All()
{
    boolean music = sharedpreferences.getBoolean("musictype", false);
    if (music) { mp1.start(); } else { mp1.stop();}      
}                           
4

1 回答 1

0
public class Activity1 extends Activity {
    boolean hasPlayed;
    boolean shouldPlayMusic;

    public void onCreate(Bundle savedInstanceState) {
        hasPlayed = false;
        SharedPreferences prefs = PreferenceManager.getDefaultSharePreferences();
        shouldPlayMusic = prefs.getBoolean("musictype", false);
        //other initialization
    }

    protected void All() {
        if(shouldPlayMusic && !hasPlayed) {
            //Should check state of MediaPlayer too
            mp1.start();
            hasPlayed = true;
        }
    }
}

基本上是这样的。保留您是否已经玩过一次的布尔标志,并在玩之前检查它以及偏好值。一旦你玩过它,设置标志,使其不再播放。

于 2012-10-19T20:46:47.177 回答