2017-07-29 60 views
0

我有一個android應用程序,它在啓動時運行服務。我的MainActivity裏面我寫數據到sharedPreferences:Android sharedPreferences服務內部爲空

String id="something"; 
    SharedPreferences sp = this.getPreferences(this.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sp.edit(); 
    editor.putString("opt", id); 
    editor.commit(); 

我想讀的正在運行的服務中的數據,但輸出是「空」:

String content="empty"; 
    SharedPreferences settings = this.getApplication().getSharedPreferences("settings",Context.MODE_PRIVATE); 
    content =settings.getString("opt", "empty"); 
    Log.i("opt:",opt); // Logs "empty" 

是否SharedPreferences服務和應用程序之間共享?或其他什麼是錯的?

回答

1

添加時,您正在使用默認的私人共享首選項,但在獲取值時,您正在調用特殊的已命名共享首選項(「設置」)。這會調用另一個名爲「settings」的文件。這就是爲什麼你的價值是空的。默認的一個和named(「設置」)共享首選項是不同的。