0

我创建了一个 PreferenceFragment。如何保存更改的首选项并通过应用重启加载?我的第二个问题:如何从另一个班级获得偏好值?

我的偏好活动

public class PrefsActivity extends ActionBarActivity {
    public static PrefsFragment mPrefsFragment;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        FragmentManager mFragmentManager = getFragmentManager();
        FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction();
        mPrefsFragment = new PrefsFragment();
        mFragmentTransaction.replace(android.R.id.content, mPrefsFragment);
        mFragmentTransaction.commit();
    }
}

还有我的 PrefsFragment

public class PrefsFragment extends PreferenceFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
    }

}
4

1 回答 1

1

要阅读首选项,请在您的其他活动中使用以下内容:

SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);

然后,要阅读首选项,请使用:

String sEmailAddr = spref.getString("email", "");

第一个参数是您想要获取的“密钥”,这应该在参数的 XML 文件中定义(R.xml.settings在您的情况下)。第二个参数是当没有这样的键时应该返回什么。

其他类型的 Preference 以类似的方式工作。要获得布尔值,请通过复选框设置:

boolean showEmail = spref.getBoolean("show_emails", true);

无需显式保存或加载首选项,因为这是自动完成的。

文档中有更多信息。您还应该初始化首选项的默认值,如此处所述

于 2015-03-27T19:29:26.963 回答