我的Android应用中有一个Settings Activity。这些设置的默认值为res/xml/preferences.xml
。我遇到的问题是,在用户实际进入设置页面之前,默认的首选项不会保存,我无法检索存储在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>
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文件和代码中两次使用默认值。
答案 0 :(得分:1)
我相信您需要调用您的活动OnCreate()
PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);