Android: 共享首选项给出未知文本

Android: shared preferences gives unknown text

所以我需要我的应用程序来保存并记住用户在搜索字段中输入的名称。 我使用共享首选项来做到这一点.. 但是当我关闭应用程序并再次打开时,我得到的不是保存的名称而是这样的文本: android.support.AppCompatEditText{1f4bcb VEFD..Cl .F...197,800-860,927 应用程序:id/username}

哪里做错了?

  static SharedPreferences sharedPref;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile);
  namefield = (EditText) findViewById(R.id.username); //this is the user-input field
  Tname = (TextView) findViewById(R.id.NameLabel); //this label will be the username when user press the UPDATEbtn
  UPDATEbtn = (Button)findViewById(R.id.Update_btn);

  // Get from the SharedPreferences
    sharedPref = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);
    String USERname = sharedPref.getString("name", String.valueOf(0));
    Tname.setText(USERname);
}




//this is the onClick method of my UPDATEbtn
public void UpdateInfo(View view)
{

Tname.setText(namefield.getText());

    sharedPref = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString("name", String.valueOf(namefield));

  // Apply the edits!
    editor.apply();


}

您正在尝试访问编辑文本。

尝试

editor.putString("name", namefield.getText().toString());

替换此行

editor.putString("name", String.valueOf(namefield));

editor.putString("name",  namefield.getText().toString());

实际上你没有得到文本字段的文本。

您应该获取编辑视图文本并保存

//更改此行

 editor.putString("name", String.valueOf(namefield));

喜欢下面

 editor.putString("name", String.valueOf(namefield.getText()));