0

我做了一个特殊的偏好布局。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
    android:key="pref_sound"
    android:title="@string/pref_sound"
    android:summary="@string/pref_sound_summ"
    android:defaultValue="true" />
<CheckBoxPreference
    android:key="pref_vibro"
    android:title="@string/pref_vibro"
    android:summary="@string/pref_vibro_summ"
    android:defaultValue="true" />
<CheckBoxPreference
    android:key="pref_screen"
    android:title="@string/pref_screen"
    android:summary="@string/pref_screen_summ"
    android:defaultValue="true" />
</menu>

和一个活动。

package com.actionandresttimer;
import android.os.Bundle;
import android.preference.PreferenceActivity;

public class Prefs extends PreferenceActivity {
@SuppressWarnings("deprecation")
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.cboxpreferenses);
    }
}

我可以通过主活动的菜单/设置启动该偏好活动,并且它可以工作。当我关闭并再次启动我的应用程序时,它会存储所有更改:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.

    //getMenuInflater().inflate(R.menu.main, menu);
    //return true;

    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    //inflater.inflate(R.menu.menu, menu);
    inflater.inflate(R.menu.main, menu);
    return true;
}

但是当我试图打电话时getPreferences,它不起作用

public void getPrefs() {
    // sPref = getPreferences(MODE_PRIVATE);
    //  sPref = PreferenceManager.getDefaultSharedPreferences(Prefs);
    sPref = this.getSharedPreferences("com.Prefs", Context.MODE_PRIVATE);

    cBoxSoundStatus = sPref.getBoolean("pref_sound", true);
    cBoxVibroStatus = sPref.getBoolean("pref_vibro", true);
    cBoxScreenStatus = sPref.getBoolean("cpref_screen", true);
}

我只能看到默认的首选项设置。我的布尔值设置为true但在首选项活动布局中它们显示为false

我尝试了 Android Developer 网站,但我是 Java 编程新手,不明白如何从官方文档网站获取任何信息。

4

1 回答 1

0

尝试使用此代码

SharedPreferences 首选项 = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

prefs.getBoolean("pref_sound", true);

于 2013-08-20T02:47:02.783 回答