Android SharedReferences getAll()方法是否只返回我最后输入的值?
据此, 此代码应返回首选项中的所有值Android SharedReferences getAll()方法是否只返回我最后输入的值?,android,sharedpreferences,Android,Sharedpreferences,据此, 此代码应返回首选项中的所有值 Map<String, ?> allEntries = sPref.getAll(); for (Map.Entry<String, ?> entry : allEntries.entrySet()) { Log.d("map values", entry.getKey() + ": " + entry.getValue().toString()); } 我之前添加了两个值name和email,但
Map<String, ?> allEntries = sPref.getAll();
for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
Log.d("map values", entry.getKey() + ": " + entry.getValue().toString());
}
我之前添加了两个值name
和email
,但这里没有显示。有人能帮我解决这个问题吗
这是我的节目
sPref = this.getSharedPreferences("com.vivid",this.MODE_PRIVATE);
sEditor = sPref.edit();
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sEditor.putString(PREF_NAME,edtName.getText().toString());
sEditor.putString(PREF_EMAIL,edtEmail.getText().toString());
sEditor.commit();
}
});
btnRetrieve.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (sPref.contains(PREF_NAME)){
edtName.setText(sPref.getString(PREF_NAME,null));
}
if (sPref.contains(PREF_EMAIL)){
edtEmail.setText(sPref.getString(PREF_EMAIL,null));
}
}
});
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sEditor.clear();
sEditor.commit()
}
});
}
public void getAllValues(){
Map<String, ?> allEntries = sPref.getAll();
for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
Log.d("map values", entry.getKey() + ": " + entry.getValue().toString());
}
}
@Override
protected void onStop() {
super.onStop();
getAllValues();
}
sPref=this.getSharedReferences(“com.vivid”,this.MODE\u PRIVATE);
sEditor=sPref.edit();
btnSave.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
sEditor.putString(PREF_NAME,edtName.getText().toString());
sEditor.putString(PREF_EMAIL,edtEmail.getText().toString());
提交();
}
});
btnRetrieve.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
if(sPref.contains(PREF_NAME)){
setText(sPref.getString(PREF_NAME,null));
}
if(存储包含(首选电子邮件)){
edtEmail.setText(sPref.getString(PREF_EMAIL,null));
}
}
});
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
sEditor.clear();
sEditor.commit()
}
});
}
public void getAllValues(){
Map allEntries=sPref.getAll();
对于(Map.Entry:allEntries.entrySet()){
Log.d(“映射值”,entry.getKey()+”:“+entry.getValue().toString());
}
}
@凌驾
受保护的void onStop(){
super.onStop();
getAllValues();
}
我之前添加了两个值:name和email,但这里没有
这是预期的行为。不能为一个键设置多个值。如果使用相同的键写入新值,旧值将被覆盖
我之前添加了两个值:name和email,但这里没有
这是预期的行为。不能为一个键设置多个值。如果使用相同的键写入新值,旧值将被覆盖。能否将如何保存值的代码发布到prefA?我想知道在添加值时如何调用prefA的.apply()。您可以创建一个Map对象并将该映射存储在json中,然后存储在SharedReference中,如:
editor.putString(key,jsonString)代码>您能否将您如何保存价值的代码发布到prefA?我想知道在添加值时如何调用prefA的.apply()。您可以创建一个Map对象并将该映射存储在json中,然后存储在SharedReference中,如:editor.putString(key,jsonString)代码>
sPref = this.getSharedPreferences("com.vivid",this.MODE_PRIVATE);
sEditor = sPref.edit();
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sEditor.putString(PREF_NAME,edtName.getText().toString());
sEditor.putString(PREF_EMAIL,edtEmail.getText().toString());
sEditor.commit();
}
});
btnRetrieve.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (sPref.contains(PREF_NAME)){
edtName.setText(sPref.getString(PREF_NAME,null));
}
if (sPref.contains(PREF_EMAIL)){
edtEmail.setText(sPref.getString(PREF_EMAIL,null));
}
}
});
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sEditor.clear();
sEditor.commit()
}
});
}
public void getAllValues(){
Map<String, ?> allEntries = sPref.getAll();
for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
Log.d("map values", entry.getKey() + ": " + entry.getValue().toString());
}
}
@Override
protected void onStop() {
super.onStop();
getAllValues();
}