我是Android新手,我正在尝试按照
中的说明处理设置http://developer.android.com/guide/topics/ui/settings.html
我使用了基于片段的解决方案,因为直接在活动中使用了该解决方案:
public class SettingFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
}
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingFragment())
.commit();
}
}
设置在应用程序中正确显示,但当我尝试使用以下方法检索其值时
sharedPref= PreferenceManager.getDefaultSharedPreferences(Dashboard.dashboard);
startDayTime=sharedPref.getString(SettingsActivity.day_switch_start, "");
startNightTime=sharedPref.getString(SettingsActivity.night_switch_start, "");
它抱怨可能无法解析值day_switch_start和night_switch_start。实际上,当我分解SettingActivity识别的值时,我会得到一长串大写字符串的标准设置,但不是我自己的字符串。 实际上这些只是输入xml文件并从SettingFragment链接,所以我怀疑我传递的上下文Dashboard.dashboard有任何引用它。然而,没有关于如何将设置引用传递给特定上下文的说明,而且他们说应该可以从任何地方获得设置。我被困了,任何解决方案?
谢谢,
答案 0 :(得分:0)
请检查您再次链接的引用,尤其是Reading Preferences部分。当您将首选项键设置为例如day_switch_start
时,您必须在阅读首选项时使用相同的字符串,例如,
startDayTime=sharedPref.getString("day_switch_start", "");
您还可以将首选项键存储到常量,如链接示例中所示:
public class SettingsActivity extends PreferenceActivity {
public static final String KEY_PREF_DAY_SWITCH_START = "day_switch_start";
// ...
然后在阅读偏好时访问它:
startDayTime=sharedPref.getString(SettingsActivity.KEY_PREF_DAY_SWITCH_START, "");
修改:我不确定Dashboard.dashboard
应代表什么,但这应该有效:
sharedPref= PreferenceManager.getDefaultSharedPreferences(this);