2013-03-05 208 views
0

我有這個訪問我的偏好的小代碼片段,以便當我的複選框是'真'時,然後播放音樂播放。否則它不會。我正在使用這個代碼的教程,但我的沒有。任何人都可以看到我的代碼有問題嗎?偏好設置不工作

當我運行應用程序,音樂播放不管,但我沒有得到任何錯誤。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.splash); 

    ourSong = MediaPlayer.create(Splash.this, R.raw.clip1); 

    SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
    boolean musicCheck = getPrefs.getBoolean("checkbox",true); 
    if (musicCheck == true){ 
     ourSong.start(); 
    } 

首XML:

<EditTextPreference 
    android:title="EditText" 
    android:key="name" 
    android:summary="Enter your name"/> 

<CheckBoxPreference 
    android:title="Music" 
    android:defaultValue="True" 
    android:key="Checkbox" 
    android:summary="For the Splash Screen"/> 

<ListPreference 
    android:title="List" 
    android:key="list" 
    android:summary="This is a list" 
    android:entries="@array/list" 
    android:entryValues="@array/lvalues" 
    ></ListPreference> 

+3

此處的默認值爲true。所以,如果你沒有正確編輯這個值,它總會是真的。向我們顯示將複選框值保存到SharedPreferences的代碼。 – 2013-03-05 18:51:02

+0

偏好的名稱實際上是「複選框」?如果您沒有該名稱的偏好,則默認爲true,所以我的猜測是首選項不存在,您錯誤地將其命名爲某處,因此您將獲得默認值。 – 2013-03-05 18:51:20

+0

顯示您的偏好xml,請 – Geobits 2013-03-05 18:53:32

回答

1

變化boolean musicCheck = getPrefs.getBoolean("checkbox",true);

boolean musicCheck = getPrefs.getBoolean("Checkbox",true);

我相信您所得到的偏好的名稱需要與首選項的關鍵字匹配。