2016-07-06 75 views
0

我試圖弄清楚爲什麼在應用程序重新啓動後無法訪問我的SharedPreference文件。SharedPreference在應用程序重新啓動後不可用

在在OnCreate我的應用程序類我定義我SharedPreference一次:

pref = getSharedPreferences(Util.PREF_FILE_NAME, Context.MODE_PRIVATE); 
editor = pref.edit(); 

然後在我的活動的onResume我打電話:

String userName = MyApp.getApplication().pref.getString(Util.USER_NAME, ""); 

但在這一點上的用戶名是重啓後總是空的。

-To保存我值:

MyApp.getApplication().editor.putString(Util.USER_NAME,"name").commit(); 

-For MyApp.getApplication()我在我的應用類中定義:

public MyApp() { 
    instance = this; 
} 
public static MyApp getApplication() { 
    if (instance == null) { 
     instance = new MyApp(); 
    } 
    return instance; 
} 

從我的設備I運行終端的應用程序和用'cat'命令我可以看到我的sharedPreference XML文件的內容。即使當我殺了我的應用程序,我可以看到sharedPreference文件仍然存在與我的正確值內。 但是,當我重新啓動我的應用程序這個值不能被讀取。那裏發生了什麼?

我已經注意到與Android棒棒糖的平板電腦我沒有問題,但與Android Kitkat平板我有這個問題。

+0

您必須提交編輯。 'edit.commit();' –

+0

@ZahidulIslam這就是我對MyApp.getApplication()。editor.putString(Util.USER_NAME,「name」)。commit(); ? – AlexDG

+2

有沒有機會Util.PREF_FILE_NAME更改應用午餐的價值? – X3Btel

回答

0

用於修改SharedPreferences對象中的值的接口。在編輯器中,你做的所有更改是成批的,而不是複製回原SharedPreferences直到調用commit()或應用()

,所以不要忘了你的editor.commit()

+0

他在更改後有.commit() – X3Btel

0

最好的,我使用方式:

Util.class

public static void saveIntToUserDefaults(Context c, String Key, int value) { 

    SharedPreferences sharedpreferences = c.getSharedPreferences(Constant.PREF_FILE_NAME, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedpreferences.edit(); 
    editor.putInt(Key, value); 
    editor.commit(); 
    Log.e("Saved:", "" + Key + "-" + value); 
} 

public static String getFromUserDefaults(Context c, String Key) { 

    SharedPreferences sharedpreferences = c.getSharedPreferences(Constant.PREF_FILE_NAME, Context.MODE_PRIVATE); 

    return sharedpreferences.getString(Key, ""); 
} 

public static void clearUserDefaults(Context c) { 

    SharedPreferences sharedpreferences = c.getSharedPreferences(Constant.PREF_FILE_NAME, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedpreferences.edit(); 
    editor.clear(); 
    editor.commit(); 
} 

我隨時隨地撥打電話&其工作精湛

相關問題