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();
}