【发布时间】:2017-08-29 01:57:01
【问题描述】:
我有一个返回用户名的 startActivityForResult。 onActivityResult 中的这段代码返回新的用户名,日志函数返回它就证明了这一点。
// return user initials from popup
setUsername(intent.getStringExtra("USERNAME"));
Log.d("ME", "Username is now :" + getUsername()); //returning the real result
结果返回到 MainActivity 后,我有一个从 getUsername() 读取的共享首选项函数;
SharedPreferences sp = getPreferences(Context.MODE_PRIVATE);
setUsername(sp.getString("USERNAME", ""));
这只是返回"" 而不是应该写入setUsername() 的内容。作为参考,我的方法是:
private void setUsername(String name) {
username = name;
}
private String getUsername() {
return username;
}
// called during onDestroy()
void write() {
SharedPreferences.Editor editor = getPreferences(Context.MODE_PRIVATE).edit();
editor.putString("USERNAME", getUsername());
editor.putBoolean("FIRST_RUN", firstRun);
editor.apply();
}
// called during onStart()
void read() {
SharedPreferences sp = getPreferences(Context.MODE_PRIVATE);
setUsername(sp.getString("USERNAME", ""));
firstRun = sp.getBoolean("FIRST_RUN", true);
}
在另一堂课中,我将用户名写入共享首选项:
private void write() {
SharedPreferences.Editor editor = getPreferences(Context.MODE_PRIVATE).edit();
editor.putString("USERNAME", etInitials.getText().toString());
editor.apply();
}
【问题讨论】:
-
你没有在你展示给我们的代码中调用 write,所以你实际上并没有把它放在共享偏好中。
-
编辑澄清何时调用 read() 和 write()
标签: android sharedpreferences startactivityforresult