【发布时间】: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 文件和代码中对默认值进行两次硬编码。
【问题讨论】: