次のように PreferenceActivity を拡張する MyPreferenceActivity があります。
public class MyPreferenceActivity extends PreferenceActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
R.xml.preferences が個々の設定クラスによって関連付けられているカスタム共有設定もあります...たとえば
Preferences.xml には
<!--EditTextPreference-->
<com.myapp.preferences.PrimaryNumberPreference
android:key="PREFS_PRIMARY_NUMBER"
android:title="@string/primary_number_preference_title"
android:summary="@string/primary_number_preference_summary"
android:dialogTitle="@string/primary_number_preference_dialog_title"
android:dialogMessage="@string/primary_number_preference_dialog_message"
/>
PrimaryNumberPreference.java :
public class PrimaryNumberPreference extends EditTextPreference {
Context ctx = null;
public PrimaryNumberPreference(Context context) {
super(context);
this.ctx = context;
}
public PrimaryNumberPreference(Context context, AttributeSet attrs) {
super(context, attrs);
this.ctx = context;
}
public PrimaryNumberPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.ctx = context;
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult){
customPreferenceibrary.setPrefsPrimaryNumber(getText());
}
}
}
OK、すべてが整っているようです。今私が欲しいのは、PreferenceActivity がロードされるたびに、それぞれのキーに格納されている現在の sharedpreference 値をフェッチし、PreferenceActivity の要素を事前設定する必要があることです...
例: アプリをインストールすると、PrimaryNumber 共有設定が 1234 に設定されます。ここで、MyPreferenceActivity に移動して PrimaryNumber EditTextPreference を参照すると、テキスト ボックスは 1234 で事前入力されているはずです。
のようなもの(疑似コード):
MyPreferenceActivity.PrimaryNumberPreference.Val = getSharedPreferences(prefsPrimaryNumber)
どうやってやるの?
編集
質問が不明確で、より良い説明が必要な場合はお知らせください。答えは、アンドロイドで非常に標準的なものの単純な実装であると確信しています。すべての PreferenceActivity 要素は、保存されている SharedPreferences のみから表示される現在の値を選択しますよね?