所以我有3节课。我正在尝试并最终在值下创建一个Integers.xml文件,以尝试保存我的值。它有效,但我无法找到如何改变它。我知道如何使用它来抓住它。
res.getInteger(R.integer.int);
我似乎无法找到如何改变它,我开始得出你不能做到的结论。我想知道在哪里需要存储值,所以当我切换到我的其他类时,整数不会全部重置。我很抱歉,因为Android中有大量的存储数据,但我无法实现他们告诉我的代码。如果只有一种简单的方法可以确保它只记得5个整数,那么我可以完成我的应用程序。
答案 0 :(得分: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);
答案 1 :(得分: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);
答案 2 :(得分:0)
如果您在关闭应用程序后不想存储这些整数,则无法将它们置于静态列表中,如
public static List<Integer> integerList = new ArrayList<>();
如果您想永久存储这些整数,可以使用SharedPreferences
或者您可以使用像this
这样的SQLite数据库答案 3 :(得分:0)
你是对的,你无法编辑resources
个文件,因为它们只运行一次。
如果您想存储关闭后留在应用中的值,可以使用SharedPreferences
如果要在运行时存储值,可以创建一个包含getters
和setters
的类:
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();