pix*_*xel 50 xml android android-preferences
我的问题是,当我启动应用程序并且用户没有打开我的PreferenceActivity时候,当我检索它们时,不会获得我的preference.xml文件中定义的任何默认值.
preference.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="applicationPreference" android:title="@string/config"
>
<ListPreference
android:key="pref1"
android:defaultValue="default"
android:title="Title"
android:summary="Summary"
android:entries="@array/entry_names"
android:entryValues="@array/entry_values"
android:dialogTitle="@string/dialog_title"
/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
我的主要活动(onCreate方法)的片段:
SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String pref1 = appPreferences.getString("pref1", null);
Run Code Online (Sandbox Code Playgroud)
结果我得到了一个null值.
Dav*_*ebb 107
在onCreate()你的主要的Activity只是调用的PreferenceManager.setDefaultValues()方法.
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
Run Code Online (Sandbox Code Playgroud)
这将读取您的preference.xml文件并设置其中定义的默认值.将readAgain参数设置为false意味着只有在过去从未调用此方法时才会设置默认值,因此您无需担心每次Activity创建时都会覆盖用户的设置.
yan*_*nko 14
我会简短的.:)
strings.xml(实际上我只有prefs.xml用于首选项):
<string name="pref_mypref_key">mypref</string>
<string name="pref_mypref_default">blah</string>
Run Code Online (Sandbox Code Playgroud)
preferences.xml:
android:key="@string/pref_mypref_key"
android:defaultValue="@string/pref_mypref_default"
Run Code Online (Sandbox Code Playgroud)
MyActivity.java:
String myprefVal = prefs.getString(getString(R.string.pref_mypref_key), getString(R.string.pref_mypref_default));
Run Code Online (Sandbox Code Playgroud)
您的呼叫getString()有null第二个参数.将其更改为您想要的默认值.
| 归档时间: |
|
| 查看次数: |
42171 次 |
| 最近记录: |