从Android中的xml文件中检索首选项

时间:2014-08-13 16:54:18

标签: android xml settings

我是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有任何引用它。然而,没有关于如何将设置引用传递给特定上下文的说明,而且他们说应该可以从任何地方获得设置。我被困了,任何解决方案?

谢谢,

1 个答案:

答案 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);