0

如何將變量的值傳遞給其他類?我正在使用SharedPreference,我不知道是否將正確的值傳遞給其他類。這是我的發言。Android Sharedpreferences傳遞變量的值

if (arr != null) { 
    int sum = 0; 
    for(int i = 0;i<arr.length();i++) { 
     listdata.add(arr.get(i).toString()); 
     String money = arr.getJSONObject(i).getString("amount"); 
     sum += Integer.parseInt(money); 
    } 

    SharedPreferences sharedPref1 = getActivity().getSharedPreferences(String.valueOf(sum), Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPref1.edit(); 
    editor.putInt(String.valueOf(sum), sum); 
    editor.commit(); 
} 

這裏是我得到了SharedPreference其他類。這是正確的嗎?

SharedPreferences sharedpref1 = getContext().getSharedPreferences(String.valueOf(""), MODE_PRIVATE); 
int budgeted = sharedpref1.getInt(String.valueOf(""), Integer.parseInt("")); 
+0

當你獲取sharedPreference偏好的文件名應該是相同的。對於你的情況,如果總和不爲空,這兩個是不同的:String.valueOf(sum)&String.valueOf(「」) – Vinodh

+0

或者,使用默認的sharedPreference像這樣: SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext ()); – Vinodh

+0

但它的一個變量?而不是在其他班級上演? –

回答

1

SharedPreference基本上是在應用程序包存儲在本地存儲的鍵 - 值對。所以你可以在你的應用程序中爲你的SharedPreference選擇一個標籤。可以說,你的SharedPreference標籤是MySharedPreference

因此,如果要將值存儲在您的SharedPreference中,則需要執行此操作。

SharedPreferences sharedPref1 = getActivity().getSharedPreferences("MySharedPreference", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref1.edit(); 
editor.putInt("TotalSum", sum); // Pick a key here. 
editor.commit(); 

而當您從其他類中檢索首選項值時,只需執行此操作。

SharedPreferences sharedpref1 = getContext().getSharedPreferences("MySharedPreference", MODE_PRIVATE); 
int budgeted = sharedpref1.getInt("TotalSum", 0); // Use the same key you used before to retrieve the data. 
+1

這真的幫助我很多謝謝你.. –

+0

很高興知道幫助! –

0

您可以使用監聽器從一個類的數據傳遞到另一個

CustomListener listener = new CustomListener(); 
myClass.setOnSumListener(listener); 
------ 
int sum = listener.getSumValue(); 

,或者您可以使用事件總線的lib https://github.com/greenrobot/EventBus