1

Androidガイドでは、XMLファイルで設定を定義することをお勧めします。そこから、ユーザーが表示および編集するために、これらをPreferenceActivity/ PreferenceFragmentetcにロードできます。ただし、実際のシナリオでは、ユーザーは最初に他のアクティビティと対話し、次に(おそらく)設定UIと対話します。

スターターアクティビティがこれらの設定のいくつかを必要とする場合はどうなりますか?設定リソースがまだ拡張されていないため、これらはまだロードされません。XMLファイルの設定に事前にアクセスする方法はありますか?

4

2 に答える 2

3

はい。最初にプリファレンスを要求するときに、デフォルト値を指定できます。たとえば、タイプ Int のプリファレンスをロードしている場合、アクティビティから次の方法でロードできます。

SharedPreferences defaultSettings = PreferenceManager.getDefaultSharedPreferences(this);
int preferenceValue = defaultSettings.getInt("PreferenceName", 7);

これにより、preferenceValue が 7 に読み込まれます (この設定はまだ初期化されていません)。これは、XML 設定ファイルにキー "PreferenceName" の設定があることを前提としています。Preference アクティビティが実行される前に、アクティビティでこの設定を編集する予定がある場合は、必ず SharedPreferenceEditor を使用して変更をコミットしてください。

// ... change to preferenceValue occurs prior to this code
SharedPreferences.Editor defaultEditor = defaultSettings.edit();
defaultEditor.putInt("PreferenceName", preferenceValue);
defaultEditor.commit();

ただし、ハードコードされた問題で「PreferenceName」を避け、strings.xml ファイルで文字列として使用することをお勧めします。このようにして、設定がまだ保存されていない場合の初期コードと設定 XML ファイルの両方から取得できます。これは、上記のコードが文字列 "PreferenceName" を次のようなものに置き換えることを意味します。

getResources().getString(R.string.pref_name)

また、設定 XML ファイルでは、次の方法でキーを参照できます。

android:key="@string/pref_name"
android:defaultValue="7"

これには、設定の「事前読み込み」と、ほとんどのアプリケーション設定を 1 か所に保持することが含まれます。最初のアクティビティが発生する前に XML 設定が作成/ロードされたかどうかという点で重複する可能性がありますが、まだテストしていません。

編集:上記のコードを使用する代わりに、次の方法で XML ファイルを (既定の設定で) 直接読み込むことができます。

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

このメソッドの詳細については、PreferenceManager のドキュメントを参照してください: http://developer.android.com/reference/android/preference/PreferenceManager.html

于 2012-09-09T06:52:12.600 に答える
0

SharedPreference API を見ると、これが表示されます。

getString(文字列キー、文字列 defValue)

したがって、実際には、まだ存在していない場合はデフォルト値を定義できます。

ソース: http://developer.android.com/reference/android/content/SharedPreferences.html

を使用して、XML でデフォルト値を事前定義することもできます。

android:defaultValue="SOMETHING"

于 2012-09-09T06:43:55.360 に答える