Android 我的偏好不是';t';粘滞';
我正在尝试为我的应用程序创建一个设置部分。我有一个res/xml/settings.xml文件:Android 我的偏好不是';t';粘滞';,android,Android,我正在尝试为我的应用程序创建一个设置部分。我有一个res/xml/settings.xml文件: <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <ListPreference android:key="numberOfYears" android
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:key="numberOfYears"
android:title="Number of Years to Read the Bible"
android:summary="How many years would you like to take to read through the reading plan?"
android:entries="@array/numberOfYears"
android:entryValues="@array/numberOfYears"
android:dialogTitle="How Many Years?"
/>
<CheckBoxPreference android:key="ignoreDates"
android:title="Ignore Dates"
android:summary="Would you like to use the dates in the plan?"
/>
</PreferenceScreen>
我不确定这是否是必需的,但我还将以下内容添加到我的主要活动中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, PREFS_MENU, Menu.NONE, "Preferences");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.d(TAG, "Menu Item: " + item.getItemId());
switch (item.getItemId()) {
case PREFS_MENU :
startActivity(new Intent(this, Preferences.class));
return true;
}
return false;
}
这似乎是可行的,因为我得到了一个“首选项”菜单,当选择它时,启动我的首选项。然而,当我选择任何东西时,这些值似乎都不会保持不变。我的理解是,安卓:键足以让系统在默认共享首选项中设置所选的值——不是这样吗
我遗漏了什么?不确定我是否正确地做到了这一点,我也希望能得到一些信息或其他最佳或更好的做法 我使我的PreferenceActivity类也实现了OnSharedPreferenceChangeListener,并使这些方法实现如下:
@Override
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
// TODO Auto-generated method stub
Preference pref = findPreference(arg1);
if (pref instanceof ListPreference) {
ListPreference listPref = (ListPreference)pref;
pref.setSummary(listPref.getEntry());
}
else {
pref.setSummary(arg0.getString(arg1, pref.getSummary().toString()));
}
}
“当我选择任何东西时,这些值似乎都不固定”——你对此的定义是什么?下面是一个有效的示例项目:如果我进入并设置首选项,按back,然后再次进入,则首选项将取消设置。这就是我不坚持的意思。不过我会看看你的项目。谢谢。有趣的是,如果我使用adb去查看共享首选项,那么这些值已经设置好了。那么,为什么在设置首选项时它们不显示?
@Override
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
// TODO Auto-generated method stub
Preference pref = findPreference(arg1);
if (pref instanceof ListPreference) {
ListPreference listPref = (ListPreference)pref;
pref.setSummary(listPref.getEntry());
}
else {
pref.setSummary(arg0.getString(arg1, pref.getSummary().toString()));
}
}