【问题标题】:Use getDefaultSharedPreferences before user opens settings activity在用户打开设置活动之前使用 getDefaultSharedPreferences
【发布时间】:2014-06-09 07:16:10
【问题描述】:

我的 Android 应用中有一个 Settings Activity。这些设置在res/xml/preferences.xml 中具有默认值。我遇到的问题是,在用户实际进入设置页面之前,不会保存默认首选项,并且我无法检索存储在 XML 文件中的默认值。

代码:

res/xml/preferences.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <EditTextPreference
        android:defaultValue="xml default value"
        android:title="foo"
        android:summary="bar"
        android:key="mykey" />

</PreferenceScreen>

SettingsActivity.java

package bh.gov.cio.gdt.app;

import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;

public class SettingsActivity extends PreferenceActivity {
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction()
            .replace(android.R.id.content, new MyPreferenceFragment()).commit();
    }

    public static class MyPreferenceFragment extends PreferenceFragment {
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
        }
    }
}

在另一个活动中:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
String myvalue = settings.getString("mykey", "code default value")
Log.d(LOG_TAG, myvalue);

首次安装应用程序时,对settings.getString 的调用会返回"code default value"。但是一旦用户打开设置活动至少一次,它就会返回xml default value

我想避免在程序第一次运行时强制用户进入设置页面。我还想避免在 XML 文件和代码中对默认值进行两次硬编码。

【问题讨论】:

    标签: android sharedpreferences


    【解决方案1】:

    我相信你需要调用你的活动OnCreate()

    PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多