Я хочу очистить данные, которые я получаю от SharedPreference, я пытаюсь найти следующий ответ, но не выполнил свою задачу:
1) как удалить общие предпочтения, выйти и запустить приложение сначала actvity в android
2) очистить значение общих настроек
3) Удалить пары ключ / значение общих настроек
4) SharedPreferences Очистить / Сохранить
все они удаляют значение после записи данных в SharedPreference, например, editor.remove и .clear ...
У меня есть запись данных в SharedPreference в уведомлении деятельности, как это:
public static final String PREFS_NAME = "com.example.sociapp";
NotificationAdapter notificationAdapter1 = new NotificationAdapter(NotificationsActivity.this, NotificationList, NKeyList);
RnotificationList.setAdapter(notificationAdapter1);
isthereItem = notificationAdapter1.getItemCount();
Toast.makeText(NotificationsActivity.this, ""+isthereItem, Toast.LENGTH_SHORT).show();
//writing data into SharedPreference
SharedPreferences.Editor editor = settings.edit();
editor.putInt("changingicon",isthereItem);
//editor.commit();
editor.clear();
editor.apply();
И я получаю это значение int в MainActivity, как это:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
// Reading from SharedPreferen
try {
//all I want to refresh below line everytime I start MainActivity.
int ChangeIcon = settings.getInt("changingicon", 0);
if (ChangeIcon == 0)
{
int valuebecomes = 0;
notificationIconSetting(valuebecomes);
}
else
{
int valuebecomes = 1;
notificationIconSetting(valuebecomes);
}
Toast.makeText(MainActivity.this, ""+ChangeIcon, Toast.LENGTH_SHORT).show();
}
catch (ClassCastException e){e.printStackTrace();}
Метод, который я вызываю, когда я получить значение int из SharedPreference:
private void notificationIconSetting(int IconTochange)
{
if (IconTochange == 0) {
navigationView.getMenu().getItem(2).setIcon(R.drawable.notification);
}
else
{
navigationView.getMenu().getItem(2).setIcon(R.drawable.notificationalert);
navigationView.setItemIconTintList(null);
}
}
На самом деле я получаю значение int больше 0, когда в адаптере есть уведомление, а когда в адаптере нет уведомления, значение int равно 0 тогда я использую это значение для изменения значка уведомления.
Когда есть уведомление:
Когда нет уведомления:
Теперь проблема заключается в том, что всякий раз, когда я получаю значение, оно остается неизменным до тех пор, пока я не очищу кэш приложения или не удалю, а затем не установлю снова. Все, что я хочу обновить sh значение SharedPreference каждый раз, когда я запускаю MainActivity.