ユーザー名を返すstartActivityForResultがあります。 onActivityResult
の中のこのコードは、それを返すログ関数によって示されているように、新しいユーザ名を返しています。startActivityForResultは正しい結果を返しますが、nullになります。
// 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();
}
あなたが私たちに示したコードでは書き込みをしていないので、実際には共有設定に入れていません。 –
read()とwrite()がいつ – DevJem