#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(); }