2013-03-05 97 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);

我相信您所得到的偏好的名称需要与首选项的关键字匹配。