不能getPreferences但它保持变化(可以在manu布局中看到)

时间:2013-08-20 02:36:26

标签: java android eclipse sharedpreferences

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

<?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开发者网站,但我不熟悉Java编程,也不了解如何从官方文档网站获取任何信息。

1 个答案:

答案 0 :(得分:0)

尝试使用此代码

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

prefs.getBoolean(“pref_sound”,true);