Не удается очистить данные из общих ссылок

#java #android #sharedpreferences

Вопрос:

Это код моих общих ссылок.Он хорошо работает при вводе и перенастройке данных, но не может очистить данные от общих ссылок

 SharedPreferences sharedPreferences1 = getSharedPreferences("userDataInSharedPref",MODE_PRIVATE);  SharedPreferences.Editor editor =sharedPreferences1.edit();  editor.putString("loginas", loginas_);  editor.putString("name", name_);  editor.putString("yearofbirth", yearofbirth_);  editor.putString("gender", gender_);  editor.apply();   SharedPreferences sharedPreferences1 = getContext().getApplicationContext().getSharedPreferences("userDataInSharedPref", Context.MODE_PRIVATE);  String uname = sharedPreferences1.getString("name", "");  String udob = sharedPreferences1.getString("yearofbirth", "");  String ugender = sharedPreferences1.getString("gender", "");  String uspeci = sharedPreferences1.getString("loginas", "");  UserName.setText(uname);  Birth_date.setText(udob);  Usergender.setText(ugender);  Specification.setText(uspeci);    binding.logout.setOnClickListener(new View.OnClickListener() {  @Override  public void onClick(View v) {  SharedPreferences.Editor editor = sharedPreferences1.edit();  editor.clear();  editor.commit();  // SharedPreferences sharedPreferences = getActivity().getApplicationContext().getApplicationContext().getSharedPreferences("autoLogin", Context.MODE_PRIVATE);  }  });  

Комментарии:

1. Привет, Арья. Не могли бы вы, пожалуйста, рассказать нам, как этот вопрос связан с Firebase?

2. по ошибке я поставил метку…..

3. Как вы наблюдаете, что данные не очищаются?

4. после нажатия на выход он показывает мне то же самое, когда я снова открываю приложение

Ответ №1:

чтобы очистить одну строку :

 sharedPreferences.edit().remove("name").commit();  

чтобы очистить все строки :

 sharedPreferences.edit().clear().apply();  

Ответ №2:

Проверьте, используете ли вы какой-либо одноэлементный класс, в котором вы могли бы извлекать значения этих переменных с помощью SharedPreferences. Экземпляр этого класса также должен быть установлен в значение null вместе с приведенным выше решением.

Комментарии:

1. То же самое произошло при использовании архитектуры MVVM, когда я получал данные с помощью SharedPreferences в моем одноэлементном классе репозитория. Даже после нажатия кнопки «Выйти» в некоторых фрагментах были видны старые учетные данные для входа . Я заметил, что только при очистке приложения старые данные уничтожались. Все это произошло из-за того, что этот экземпляр одноэлементного класса все еще был жив и сохранял старые значения.

Ответ №3:

Чтобы очистить его, вам нужно добавить этот код

 public void clear(){  SharedPreferences.Editor editor = sharedPreferences.edit();  editor.clear();  editor.apply(); }