2016-04-27 67 views
0

所以我有3個類。我嘗試了一些東西,並最終在值下創建了一個Integers.xml文件,以嘗試保存我的值。它的工作原理,但我無法找到如何改變它。我明白如何使用它。在Android中存儲整數

res.getInteger(R.integer.int);

我似乎無法找到如何改變它,我開始得出結論,你不能。我想知道在哪裏需要存儲值,所以當我切換到其他類並從其他類切換到整數不會重置時。我很抱歉,因爲Android中有大量存儲數據,但我無法實現他們告訴我的代碼。如果只有一個簡單的方法來確保它只記得5個整數,我可以完成我的應用程序。

回答

1

存儲在您的integers.xml中的值是常量,因此它們不能更改。存儲5個整數的快速方法是使用SharedPreferences並將每個整數與其自己的唯一鍵一起存儲。 例如,在一個活動:

SharedPreference prefs = getSharedPreferences("com.example.myapp", MODE_PRIVATE); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putInt("Integer1", 234); 
editor.putInt("Integer2", 748); 
editor.putInt("Integer3", 747); 
editor.putInt("Integer4", 42); 
editor.putInt("Integer5", 463); 

爲了獲取值回:

SharedPreference prefs = getSharedPreferences("com.example.myapp", MODE_PRIVATE); 
int integer1 = prefs.getInt("Integer1", 0); 
int integer2 = prefs.getInt("Integer2", 0); 
int integer3 = prefs.getInt("Integer3", 0); 
int integer4 = prefs.getInt("Integer4", 0); 
int integer5 = prefs.getInt("Integer5", 0); 
+0

好的,謝謝您。我會看看這個。 – TeenCoder

+0

@TeenCoder我加了一個例子 – AgileNinja

+0

非常感謝!在這個例子之前,我遇到了這個問題,但希望遇到這個問題的人也能解決這個問題。 – TeenCoder

1

下面是基本的代碼來讀取和寫入SharedPrefs。注意,這種方法在本地保存在用戶的設備上的數據:

寫:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putInt(getString(R.string.saved_high_score), newHighScore); 
editor.commit(); 

閱讀:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
int defaultValue = getResources().getInteger(R.string.saved_high_score_default); 
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue); 

來源:Official Google Documentation

+0

謝謝你和其他回覆的人。我結束了看YouTube教程,並能夠保存我的整數。這比我遇到的其他數據保存方法容易100倍。 – TeenCoder

+0

沒問題!你能把這個標記爲答案嗎? – tccpg288

0

如果你不想來存儲這些整數關閉你的應用程序後,你不能把它們放到一個靜態列表中,如

public static List<Integer> integerList = new ArrayList<>(); 

如果你想永久保存這些整數可以使用SharedPreferences

,或者您可以使用SQLite數據庫就像this

0

你說的沒錯,你不能編輯resources文件,因爲它們只運行一次。
如果要存儲在應用程序關閉後將保留在應用程序中的值,可以使用SharedPreferences
如果你想在運行時存儲的值,你可以創建一個類getterssetters

public class Values { 

    int value1; 
    int value2; 

    public int getValue2() { 
    return value2; 
    } 

    public void setValue2(int value2) { 
    this.value2 = value2; 
    } 

    public int getValue1() { 
    return value1; 
    } 

    public void setValue1(int value1) { 
    this.value1 = value1; 
    } 
} 

在任何活動,你可以設置,讓你這樣的價值觀:

Values.setValue1(yourValue1); 
Values.getValue1();