#java #android
#java #Android
Вопрос:
У меня есть два фрагмента CommentsFragment
, и RegistrationFragment
CommentsFragment
я сохраняю свой предпочтительный 3-строковый тип данных.
Вот мой фрагмент комментария
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;
}
Здесь я сохраняю три моих строковых данных в моем CommentsFragment.
@Override
public void onSaveClicked(User user) {
singleTon.setUser(user);
}
Вот мой одноэлементный файл.
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);
}
}
В моем RegistrationFragment я хочу представить все мои три строковые данные.Вот как я это реализовал.
@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());
}
}
Мой вопрос в том, что когда я сохраняю три даты в своем CommentsFragment и перехожу к RegistrationFragment в своих EditTexts, мои данные не отображаются, но если я закрою свое приложение и запущу его, то в моем RegistrationFragment будут показаны все три значения данных. Как это можно решить, пожалуйста, помогите мне?
Ответ №1:
Попробуйте использовать editor.commit();
вместо editor.apply();
Также есть условие для проверки, не является ли user null . перед строкой ниже.
if (user.getWebSite() != null) {