Java - Android PreferenceFragment 保存和加载首选项

标签 java android sharedpreferences preferencefragment

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

我的首选项 Activity

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);
    }

}

最佳答案

要读取首选项,请在其他 Activity 中使用以下内容:

SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);

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

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

第一个参数是您想要获取的“ key ”,这应该在首选项的 XML 文件中定义(在您的情况下为 R.xml.settings)。第二个参数是当没有这个键时应该返回的值。

其他类型的首选项以类似的方式工作。要获取 boolean 值,请通过复选框设置:

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

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

更多信息请参见the docs 。您还应该初始化首选项的默认值,如here所述。 .

关于Java - Android PreferenceFragment 保存和加载首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29307250/

相关文章:

java - 从 POM 中的 Maven 配置文件进行 Spring Boot

android - Lollipop 中导航栏的默认 Alpha 值

java - 如何在 Android 软键盘上获取 '.' 点字符 KeyPressEvent

java - ListView 共享元素转换问题

java - 如果我的应用程序需要大量连接查询,我应该使用 ORM

java - 处理异常情况下的 Http 请求

java - 如何将将图像放入标签中的代码从桌面更改为项目文件

android - 在共享首选项中选择、裁剪和保存 uri 图像

android - StatefulWidget的createState方法中如何读取值

android - 主 Activity 的 PreferenceActivity 调用方法