多个共享首选项导致默认值

时间:2013-11-23 21:22:48

标签: android android-fragments sharedpreferences android-xml android-preferences

基本上我正在制作一个应用程序来计算不同金额的复利。如果您愿意,可以使用2个“共享首选项”。

设置 - 供用户输入利率,复利频率,期限

首选项 - 用于应用设置(例如,显示或不显示,设置背景颜色)

我正在使用的程序是当我有一组首选项时它工作正常。然而,当我有两个(当我创建'偏好'时),它搞砸了第一个设置首选项,称为'设置'。

此外,无论何时检索首选项,它都在片段中。

以下是我获得偏好的方式(当我没有2偏好xml时):

SharedPreferences getSetup = PreferenceManager.getDefaultSharedPreferences(getActivity().getBaseContext());
String t2 = getSetup.getString("rate", null);

这是我尝试的解决方案(打开特定文件然后使用getSetup或getPrefs.getString(“key,null”) - 它不起作用并始终返回默认值)

SharedPreferences getPrefs = getActivity().getSharedPreferences("preferences",0); 和设置

SharedPreferences getSetup = getActivity().getSharedPreferences("setup",0);

每当我运行应用程序时,我都会收到错误消息(“请正确设置应用程序并输入所有值”)此错误消息已设置为使用以下代码运行:

SharedPreferences getSetup = getActivity().getSharedPreferences("setup",0);    
int t1 = value1.getText().length();
int t1_2 = value2.getText().length();

String t2 = getSetup.getString("rate", null);
String t3 = getSetup.getString("retirement", null);

String t4 = getSetup.getString("compounds", null);
String t5 = result.getText().toString();

if (t1 == 0 ||t1_2 ==0 || t2 == null || t3 == null || t4 == null) {
 //show the error message

有人可以告诉我我做错了什么以及如何获得特定的偏好。

干杯

2 个答案:

答案 0 :(得分:0)

我认为你想要的是

SharedPreferences getSetup = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

您可以在此处查看有关上下文的更多信息 What's the difference between the various methods to get a Context?

答案 1 :(得分:0)

getDefaultSharedPreferences和getSharedPreferences之间存在差异 试试如下。

此defaultsharedpref适用于应用特定的共享偏好设置。

SharedPreferences getSetup = PreferenceManager.getDefaultSharedPreferences(getActivity());
        getSetup.edit().putString("rate", "200").commit();
        String rate= getSetup.getString("rate", null);

SharedPreferences存储在app数据文件夹的xml文件中,即

/data/data/YOUR_PACKAGE_NAME/shared_prefs/reference.xml /data/data/YOUR_PACKAGE_NAME/shared_prefs/setup.xml

或默认首选项:

/data/data/YOUR_PACKAGE_NAME/shared_prefs/com.android.example_preferences.xml