我有一个像这样扩展 PreferenceActivity 的 MyPreferenceActivity:
public class MyPreferenceActivity extends PreferenceActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
我也有 R.xml.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());
}
}
}
好的,一切似乎都已到位。现在我想要的是每次加载 PreferenceActivity 时,它应该获取存储在各自键中的当前 sharedpreference 值并预填充 PreferenceActivity 的元素......
例如:安装我的应用程序时,PrimaryNumber 共享首选项设置为 1234。现在,如果我转到 MyPreferenceActivity 并浏览 PrimaryNumber EditTextPreference,则文本框应预填充 1234。
像这样的东西(伪代码):
MyPreferenceActivity.PrimaryNumberPreference.Val = getSharedPreferences(prefsPrimaryNumber)
我怎样才能做到这一点?
编辑
如果问题不清楚并且需要更好的解释,请告诉我。我确信答案是在 android 中非常标准的东西的简单实现。所有 PreferenceActivity 元素仅从存储的 SharedPreferences 中选择要显示的当前值,对吗?