0

我有一个问题,我多次计算,每次都有结果,一旦完成最终计算,我想将答案存储在共享偏好中,问题是我一直为零。

这是我的循环代码,计算和共享偏好

活动一

for (i = 0; i < happyRating.size()-1; i++) {
    int test = happyRating.get(i);


        if (happyRating.get(i) < happyRating.size()) {
            Log.d("TestTrain", "CALLED");
            int x, x1, x2, y, y1, y2;
            double learningRate = -0.00002;
            //double learningRate = -0.00092;

            x1 = happyRating.get(i);
            x2 = happyRating.get(i + 1);
            y1 = iteration[i];
            y2 = iteration[i + 1];

            x = x2 - x1;
            y = y2 - y1;

            if (x == 0) {
                slope = 0;
            } else {
                slope = (y2 - y1) / (x2 - x1);
            }

            double weightAdj = happyRating.get(i) * slope * learningRate;

            weighting = (weighting + weightAdj);
            dynA =  distArray[i] * weighting;

            Log.d("TestInt", "HappyRating (i): " + Integer.toString(test));
            Log.d("WEIGHTING", Double.toString(weighting)); 

            String PREFS1 = "siclPrefs1";
            SharedPreferences siclPrefs1 = getSharedPreferences(PREFS1,0);
            Editor editor = siclPrefs1.edit();
            editor.putFloat("Weight7", (float) weighting);
            editor.commit();

            if (dynA > 1)
            {
                break;
            }

        } else {
            break;
        }

    }

我正在使用 sharedpreferences 来存储一个布尔值,当我在下一个活动中检查它时,这很好。如果有任何冲突,这里是代码

TrainingDone = true;

    String PREFS = "siclPrefs";
    SharedPreferences siclPrefs = getSharedPreferences(PREFS,0);
    Editor editor = siclPrefs.edit();
    editor.putBoolean("Train7", TrainingDone);
    editor.commit();

活动二

对其他活动的提取如下完成

       String PREFS = "siclPrefs";
    SharedPreferences siclPrefs = getSharedPreferences(PREFS, 0);

    String PREFS1 = "siclPrefs1";
    SharedPreferences siclPrefs1 = getSharedPreferences(PREFS1, 0);

            double weight = (double) siclPrefs1.getFloat("Weight7", 0);
            Boolean train = siclPrefs.getBoolean("Train7", false);

布尔值提取得很好,但是权重显示为零,我知道这是因为它不存在并且默认为零。我可以重复使用编辑器还是那是我跌倒的地方?

问候,加里

4

2 回答 2

0

You can use this PublicSharePreferences class.

public class PublicSharedPreferences {

    public static void setDefaults(String key, String value, Context context) {
      SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
      SharedPreferences.Editor editor = prefs.edit();
      editor.putString(key, value);
      editor.commit();
    }

    public static String getDefaults(String key, Context context) {
      SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(context);
      return preferences.getString(key, null);
    }

}

Hope this helps.

于 2013-04-25T16:23:50.237 回答
0

要获得偏好,请使用以下命令:

SharedPreferences prefs = this.getSharedPreferences(
                  "Package_Name", Context.MODE_PRIVATE);

要将数据保存到该首选项,请执行以下操作:

prefs.edit().putString("Key", "Value").commit();

要从该偏好中获得价值,请执行以下操作:

prefs.getString("Key", null)
于 2013-04-25T16:25:53.313 回答