1

基本上,我正在製作一個計算不同金額複合利息的應用程序。如果你願意,還有2個'共享首選項'。導致默認值的多個共享首選項

設置 - 用戶輸入利率,複利頻率,長期

喜好 - 爲應用程序設置(如顯示美分與否,設置背景色)

我遇到的程序是,當我有一套偏好,它工作得很好。然而,當我有兩個(當我創建'首選項')時,它混淆了第一個設置首選項,稱爲'設置'。

此外,每當它檢索到它的首選項時,它就在一個片段中。

這裏是我是如何得到的偏好(當我沒有足夠的2偏好XML的):

SharedPreferences getSetup = PreferenceManager.getDefaultSharedPreferences(getActivity().getBaseContext()); 
String t2 = getSetup.getString("rate", null); 

這裏是我試過的解決方案(如打開特定文件,然後當然使用getSetup或getPrefs .getString( 「鍵,空」) - 它沒有工作,總是返回默認值)

SharedPreferences getPrefs = getActivity().getSharedPreferences("preferences",0); 和設置

SharedPreferences getSetup = getActivity().getSharedPreferences("setup",0);

每當我運行應用程序,我得到我的錯誤消息(「請正確設置應用程序,並輸入所有瓦萊斯」)此錯誤消息是建立與下面的代碼運行:

SharedPreferences getSetup = getActivity().getSharedPreferences("setup",0);  
int t1 = value1.getText().length(); 
int t1_2 = value2.getText().length(); 

String t2 = getSetup.getString("rate", null); 
String t3 = getSetup.getString("retirement", null); 

String t4 = getSetup.getString("compounds", null); 
String t5 = result.getText().toString(); 

if (t1 == 0 ||t1_2 ==0 || t2 == null || t3 == null || t4 == null) { 
//show the error message 

可有人請告知我做錯了什麼,以及如何獲得特定的偏好設置。

乾杯

回答

0

我想你想要的是

SharedPreferences getSetup = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

您可以在 What's the difference between the various methods to get a Context?

+0

我得到錯誤'方法getApplicationContext()未定義爲類型new View。OnClickListener(){}',或者如果我在開始時使用它,方法getApplicationContext()對於FragmentNormal類型是未定義的 – andrew

+0

您可以在獲取上下文的位置顯示更多代碼嗎?並顯示類聲明。 –

+0

公共類FragmentNormal擴展片段,我嘗試了你的解決方案,但與getActivity()。getApplicationContext(),應用程序退出時,它試圖返回一個值。在上下文中,我始終在使用(getActivity()。getBaseContext())之前,我有兩個單獨的首選項文件 – andrew

0

看到更多關於上下文有getDefaultSharedPreferences和getSharedPreferences 嘗試按以下之間的差異。

此defaultsharedpref用於特定於應用的共享首選項。

SharedPreferences getSetup = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
     getSetup.edit().putString("rate", "200").commit(); 
     String rate= getSetup.getString("rate", null); 

SharedPreferences被存儲在該應用程序的數據文件夾中的XML文件,即

/data/data/YOUR_PACKAGE_NAME/shared_prefs/reference.xml /data/data/YOUR_PACKAGE_NAME/shared_prefs/setup.xml

或在默認的喜好:

/data/data/YOUR_PACKAGE_NAME/shared_prefs/com.android.example_preferences.xml

+0

我得到'The方法getSharedPreferences(String,int)對於FragmentNormal類型是未定義的,另外setup是XML文件的名稱,而不是它的一個特定首選項 – andrew

+0

當應用程序創建它時將創建默認首選項文件。是另一個文件(不是默認的一個oe首選項或設置),並從默認的共享pref文件回顧。這就是你得到默認設置值,即null的原因...請讓我知道,如果它澄清你的問題 – kedark

+0

也如果可能檢查下面這個鏈接http://stackoverflow.com/questions/6146106/where-are-shared-preferences-stored – kedark