2017-03-27 150 views
-1

我試圖將新值寫入共享首選項,似乎不工作,我錯過了什麼。Android共享首選項不更新

// this tests output 
System.out.println("This OLD ID : "+oldPost+ " - NEW ID :"+postID); 


// output : This OLD ID : 5233 - NEW ID :5216 



     ///get old id 
     SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE); 
     String oldPost = prefs.getString("newsId", null); 


      if (oldPost.equals(postID)) 
      { 
       System.out.println("This has been alerted : "); 
      } 
      else 
      { 

       System.out.println("This is something new : "); 


//set old post to new post - does not seem to work 
SharedPreferences.Editor editor = getSharedPreferences("MyPrefs", MODE_PRIVATE).edit(); 
        editor.clear(); 
        editor.putString("newsId", "" + oldPost); 
        editor.commit(); 
       } 
      } 

希望這是一個明顯的答案...在此先感謝。

+0

檢查此問題[答案](http://stackoverflow.com/questions/18793903/android-sharedpreferences-update-does-not-work) –

+0

如果不會有如果(oldPost.equals(postID))'會給你nullPointerException,所以你想要檢查它是否爲null,或者設置'oldPost'的默認值。 – miljon

+0

當你第一次提供代碼newsId到您的SharedPreference。在上面的代碼中,您甚至在放置字符串之前應用了getString。 – tahsinRupam

回答

0

而不是

editor.putString("newsId", "" + oldPost); 

String oldPost = prefs.getString("newsId", null); 接下來editor.putString("newsId", "" + oldPost);在這裏你插入oldPost它應該是postID先做這個

editor.putString("newsId", "" + postID); 
0

第一件事,不要使用空,使用空字符串""。其次,您不需要將字符串強制轉換爲"" + oldPost的字符串,因爲它們具有相同的類型,並且如果您要執行強制轉換,請將默認的String.format API清理得更乾淨。您也不需要簡單地清除sharedPreference覆寫它。所以刪除清除方法。你可以簡單地單獨刪除鍵,如果你想與editor.remove(String key);