【发布时间】:2020-08-12 06:22:11
【问题描述】:
我想清除从 SharedPreference 获得的数据,我尝试了以下答案但没有完成我的任务:
1) how to delete sharedpreferences ,Quit and launch application from first actvity in android
2) clear the value of sharedpreferences
3)Remove Shared preferences key/value pairs
4) SharedPreferences Clear/Save
在将数据写入 SharedPreference 之后,它们都在删除值,例如 editor.remove 和 .clear...
我已经在 Notification Activity 中将数据写入 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();
我在 MainActivity 中得到这个 int 值,如下所示:
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();}
当我从 SharedPreference 获取 int 值时调用的方法:
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);
}
}
实际上当适配器中有通知时我得到一个大于0的int值,而当适配器中没有通知时int值等于0,那么我正在使用这个值来更改通知图标.
有通知时:
没有通知时:
现在的问题是,每当我获得一个值时,它都会保持不变,直到我清除应用缓存或卸载然后再次安装。 我只想在每次启动 MainActivity 时刷新 SharedPreference 值。
【问题讨论】:
-
在您的 mainactivity 的 onCreate 中再次将首选项值设置为
0。 -
我试过了,但这不起作用,在达到 SharedPreferene getInt();值已更改并保持不变...