2016-04-27 101 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();