Android Preference新旧价值比较

时间:2016-03-13 22:02:30

标签: android preferences

我有来自activity1的NewValue并存储首选项并与来自activity2的OldValue进行比较:我的问题是它不存储oldValue ..

活动1:

  int i = 5;      

  SharedPreferences prefs1 = getPreferences(0);
  SharedPreferences.Editor editor = getPreferences(0).edit();
  editor.putInt("new", i);
  editor.commit();

活动2:

    SharedPreferences prefs1 = getPreferences(0);
    int oldValue = prefs1.getInt("old", 0);
    int newValue = prefs1.getInt("new", 0);

    /* Should Activity Check for Updates Now? */
    if (oldValue < newValue) {

        /* Save current newValue for next Check */
        SharedPreferences.Editor editor = getPreferences(0).edit();
        editor.putInt("old", newValue);
        editor.commit();

        do something....

    }

2 个答案:

答案 0 :(得分:0)

是newValue的关键是&#34; new&#34;或&#34; newValue&#34; ?你用密钥保存它并用另一个

检索

所以它不会找到newValue所以它总是等于零

 editor.putInt("newValue", 5);
 int newValue = prefs1.getInt("new", 0); 

所以你的newValue将等于0,因为没有键&#34; new&#34;在prefrences

答案 1 :(得分:0)

好吧,如果您想要与活动共享偏好,那么您需要使用getSharedPreferences(String, int)但是您正在使用getSharedPreferences(int)

  

getSharedPreferences(int)

检索访问此活动专用的首选项的SharedPreferences对象。这只是调用底层的getSharedPreferences(String,int)方法将此活动的类名称作为首选项名称传递。

像这样得到SharedPreference对象

SharedPreferences prefs1 =getSharedPreferences ("app_prefs", Context.MODE_PRIVATE);