50

私の問題は、アプリケーションを起動したときにユーザーが開かなかったPreferenceActivityため、それらを取得したときに、preference.xml ファイルで定義されたデフォルト値が取得されないことです。

プリファレンス.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>

私のメインアクティビティ(onCreateメソッド)からのスニペット:

    SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);        
    String pref1 = appPreferences.getString("pref1", null);

その結果、私はnull値になります。

4

3 に答える 3

111

onCreate()メインでメソッドActivity呼び出すだけです。PreferenceManager.setDefaultValues()

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

これにより、ファイルが読み取らpreference.xmlれ、そこで定義されているデフォルト値が設定されます。readAgain引数を に設定するfalseと、このメソッドが過去に一度も呼び出されていない場合にのみデフォルト値が設定されるため、作成されるたびにユーザーの設定を上書きすることを心配する必要はありませんActivity

于 2010-05-20T15:39:22.423 に答える
14

簡単に説明します。:)

文字列.xml(実際には、設定専用のprefs.xmlがあります):

<string name="pref_mypref_key">mypref</string>
<string name="pref_mypref_default">blah</string>

Preferences.xml

android:key="@string/pref_mypref_key"
android:defaultValue="@string/pref_mypref_default"

MyActivity.java

String myprefVal = prefs.getString(getString(R.string.pref_mypref_key), getString(R.string.pref_mypref_default));
于 2010-05-20T15:10:37.573 に答える
8

への呼び出しにgetString()null、2 番目のパラメーターがあります。これを必要なデフォルト値に変更します。

于 2010-05-20T14:09:36.903 に答える