【问题标题】:SharedPreference in fragment片段中的 SharedPreference
【发布时间】:2020-01-03 06:52:33
【问题描述】:
Public void saveData() {
SharedPreferences prefs = getActivity().getSharedPreferences(SHARED_PREFS, MODE_PRI. VATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(TEXT,edit name.getText().toString());
editor.apply();
}
我在fragment 中使用了SharedPreferences。
我想在mainActivity 中使用来自fragment 的SharedPreferences 数据。
我怎样才能做到这一点?请帮忙。
【问题讨论】:
标签:
android-studio
android-fragments
android-activity
sharedpreferences
【解决方案1】:
您可以为SharedPreference 创建一个singleton class,然后您可以从任何您想要的activity 或fragment 访问它。
示例
public class SessionManager {
private static SessionManager jInstance;
private final SharedPreferences prefs;
private final SharedPreferences.Editor editor;
private SessionManager(Context context) {
prefs = context.getSharedPreferences("Your_Preference_name", Context.MODE_PRIVATE);
editor = prefs.edit();
}
public static synchronized SessionManager getInstance(Context context) {
if (jInstance != null) {
return jInstance;
} else {
jInstance = new SessionManager(context);
return jInstance;
}
}
public void setUserEmail(String userEmail){
editor.putString("user_email",userEmail);
editor.apply();
}
public String getUserEmail(){
return prefs.getString("user_email","");
}
}
现在您可以从任何activity 或fragment 使用SessionManager,如下所示。
SessionManager.getInstance(context).setUserEmail("abc@gmail.com");
String email = SessionManager.getInstance(context).getUserEmail();