SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Login.this);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("UID", jobj1.getString("admin_id").toString());
editor.apply();
Toast toast = Toast.makeText(Login.this, "Login Successfully", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
Intent i1=new Intent(Login.this,DashBoard.class);
startActivity(i1);
finish();
这是我使用Intent的注销代码,我想在点击注销按钮时清除SharedPreference
。
case "Logout":
Intent i5=new Intent(context1, Login.class);
i5.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context1.startActivity(i5);
((DashBoard)context1).finish();
Toast.makeText(context1,"Logout",Toast.LENGTH_LONG).show();
答案 0 :(得分:3)
使用clear()
方法:
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit();
editor.clear()
editor.apply()
答案 1 :(得分:0)
SharedPreferences preferences = context.getSharedPreferences("pref_name, Context.MODE_PRIVATE);
preferences.edit().clear().commit();
答案 2 :(得分:0)
对于API 24(牛轧糖)或更高版本,您只需拨打deleteSharedPreferences(String name)
即可context.deleteSharedPreferences("YOUR_PREFS");
但是,没有向后兼容性,因此如果您支持少于24的任何内容,则可以使用apply()
进行非阻塞异步操作。
context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply(); //apply() for non-blocking asynchronous operation
或者在你的情况下,
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();
commit():同步写入数据(阻止调用它的线程)并返回操作成功。
apply():计划要异步写入的数据。它没有通知您操作是否成功。
As per official docuement,如果您不关心返回值并且从应用程序的主要线程中使用此值,请考虑使用apply()
代替{{1} }}
答案 3 :(得分:0)
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit();
editor.remove("UID");//your key
editor.commit();
clear()
可以删除首选项中的所有值。