我希望用户输入一些数据并将其存储在变量中以便稍后显示。但是,当下次先前输入的数据丢失时打开应用程序。我该怎么办?
答案 0 :(得分:2)
试试这段代码
private SharedPreferences sharedpreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String MyPREFERENCES=this.getPackageName();
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
//your rest code here
}
//write data
private void storeUserData(String val1){
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("uName", val1);
editor.commit();
}
//read data
private String read userData(){
return this.sharedpreferences.getString("uName", "");
}
答案 1 :(得分:0)
当活动开始时,所有变量都将重新分配内存,因此旧的内存缓冲区已被破坏。
要解决此问题,您可以使用android中的SharedPreference。
创建共享偏好:
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
Editor editor = pref.edit();
将数据存储为KEY / VALUE对:
editor.putBoolean("key_name1", true); // Saving boolean - true/false
editor.putInt("key_name2", "int value"); // Saving integer
editor.putFloat("key_name3", "float value"); // Saving float
editor.putLong("key_name4", "long value"); // Saving long
editor.putString("key_name5", "string value"); // Saving string
保存SharedPreferences中的更改
editor.commit(); // commit changes
获取SharedPreferences数据
pref.getBoolean("key_name1", null); // getting boolean
pref.getInt("key_name2", null); // getting Integer
pref.getFloat("key_name3", null); // getting Float
pref.getLong("key_name4", null); // getting Long
pref.getString("key_name5", null); // getting String
从SharedPreferences中删除键值
editor.remove("key_name3"); // will delete key key_name3
editor.remove("key_name4"); // will delete key key_name4
删除后保存SharedPreferences中的更改
editor.commit(); // commit changes
清除SharedPreferences中的所有数据
editor.clear();
editor.commit();