我有一個startActivityForResult返回一個用戶名。 onActivityResult
中的此代碼正在返回新的用戶名,如日誌函數返回它的證明。startActivityForResult返回正確的結果,但它變成空
// 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();
}
您不會在您向我們顯示的代碼中調用寫入,因此您實際上並未將其置於共享首選項中。 –
編輯澄清何時讀取()和寫入()調用 – DevJem