Reputation: 763
I have two fragments CommentsFragment
and RegistrationFragment
On CommentsFragment
I save to my preference 3 String data type.
Here is my CommentsFragment
SingleTon singleTon;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_comment, container, false);
ButterKnife.bind(this, view);
Bundle args = getArguments();
singleTon = SingleTon.getInstance();
singleTon.setContext(getContext());
user = singleTon.getUser();
id = args.getInt("id");
slug = args.getString("slug");
return view;
}
Here I am Saving three my String datas in my CommentsFragment.
@Override
public void onSaveClicked(User user) {
singleTon.setUser(user);
}
Here my SingleTon file.
public class SingleTon {
private SharedPreferences preferences;
private static SingleTon singleTon;
public static SingleTon getInstance() {
if (singleTon == null) {
singleTon = new SingleTon();
}
return singleTon;
}
public void setContext(Context context) {
preferences = context.getSharedPreferences("preferences", Context.MODE_PRIVATE);
}
public void setUser(User user) {
setMail(user.getMail());
setName(user.getName());
setWeb(user.getWebSite());
}
public User getUser() {
User user = new User();
user.setWebSite(getWeb());
user.setName(getName());
user.setMail(getMail());
return user;
}
private void setMail(String mail) {
SharedPreferences.Editor editor = preferences.edit();
editor.putString("mail", mail);
editor.apply();
}
private void setName(String name) {
SharedPreferences.Editor editor = preferences.edit();
editor.putString("name", name);
editor.apply();
}
private void setWeb(String web) {
SharedPreferences.Editor editor = preferences.edit();
editor.putString("web", web);
editor.apply();
}
private String getName() {
return preferences.getString("name", null);
}
private String getWeb() {
return preferences.getString("web", null);
}
private String getMail() {
return preferences.getString("mail",null);
}
}
In My RegistrationFragment I want to represent all my three String datas.Here how I implemented it.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_registration, container, false);
singleTon = SingleTon.getInstance();
singleTon.setContext(getContext());
user = singleTon.getUser();
setEditText();
return view;
}
private void setEditText() {
if (user.getWebSite() != null) {
edit_web.setText(user.getWebSite());
}
if (user.getName() != null) {
edit_name.setText(user.getName());
}
if (user.getMail() != null) {
edit_mail.setText(user.getMail());
}
}
My Question is When I save three date in my CommentsFragment and go to RegistrationFragment in my editTexts it doesn't show my data but if I close my app and run it then in my RegistrationFragment all three data values are shown. How can Solve it please help me ?
Upvotes: 0
Views: 715
Reputation: 27549
Try using editor.commit();
instead of editor.apply();
Also have a condition to check if user is not null. before below line.
if (user.getWebSite() != null) {
Upvotes: 1