1

の 2 つのファイルがありますSharedPreferences(1 つは に表示され、PreferenceActivity2 つ目は に表示されてはならない値が格納されますPreferenceActivity)。問題 - 起動時に両方のファイルからこれらの値をロードしたい。

  1. getSharedPreferences()ファイル名を試してみました。奇妙なことに、実際の値を読み取ることができません。常にデフォルト値が返されます。

  2. リソース ファイル ID を使用addPreferencesFromResource()して渡すと、値が読み取られますが、この方法は使用できActivityませPreferenceActivityん。

複数の設定ファイルから値を読み取るにはどうすればよいですか? 最初の引数として何を渡す必要がありますgetSharedPreferences()か (拡張子付きのファイル名、拡張子なしのファイル名など)?

方法がありPreferenceManager.getDefaultSharedPreferences()ます。複数のファイルがある場合の「デフォルト」とは何ですか?

とても単純な作業で、多くの時間を無駄に...

4

1 に答える 1

2

PreferenceManager.getGlobalPreferences短い答え: 「名前付き」の設定ではなく、デフォルトの設定ファイルをロードするある時点で呼び出しているようです。これを混在させるcontext.getSharedPreferences("PREFS_NAME", Context.MODE_WORLD_READABLE)と、奇妙な動作が発生します。

長い答え: 開くたびに読み込む設定ファイルの名前を指定する必要があります。

SharedPreferences prefs = context.getSharedPreferences("PREFS_NAME", Context.MODE_WORLD_READABLE)

これにより、「PREFS_NAME.xml」というファイル名の新しい設定ファイルが存在しない場合は、アプリケーションが新しい設定ファイルを作成し、それを使用するように強制されます。

addPreferencesFromFile() は、PreferenceActivity を設定するためだけに使用される別の関数です。PreferenceActivity を使用したくない場合は、役に立ちません。

設定に設定アクティビティを使用する場合は、上記を使用してから、この設定アクティビティ インスタンスの設定を次のように設定します。

getPreferenceManager().setSharedPreferencesName("PREF_NAME);

次に、 を呼び出しますaddPreferencesFromResource()。PreferenceActivity を使用していない場合、 addPreferencesFromResource() は何もしません。

于 2011-02-17T09:03:24.210 に答える