注销清除 SharedPreferences
Posted
技术标签:
【中文标题】注销清除 SharedPreferences【英文标题】:Logout clear SharedPreferences 【发布时间】:2014-08-01 13:21:59 【问题描述】:我有一个登录页面,将username
和password
保存到SharedPreferences
。我有另一个包含注销按钮的Activity
类。单击注销按钮时,我想清除SharedPreferences
。问题是我没有从这堂课中得到SharedPreferences
。如何获得SharedPreferences
?
登录页面
public class MainActivity extends Activity
public SharedPreferences.Editor loginPrefsEditor;
public SharedPreferences loginPreferences;
private Boolean saveLogin;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = (EditText) findViewById(R.id.et_Username);
pass = (EditText) findViewById(R.id.et_Password);
login = (Button) findViewById(R.id.bt_Login);
loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE);
loginPrefsEditor = loginPreferences.edit();
saveLogin = loginPreferences.getBoolean("saveLogin", false);
if (saveLogin == true)
name.setText(loginPreferences.getString("username", ""));
pass.setText(loginPreferences.getString("password", ""));
login.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
name1 = name.getText().toString();
pass1 = pass.getText().toString();
//new Thread (new Task()).start();
loginPrefsEditor.putBoolean("saveLogin", true);
loginPrefsEditor.putString("username", name1);
loginPrefsEditor.putString("password", pass1);
loginPrefsEditor.commit();
new myAsyncTask().execute();
);
AnotherActivity 中的注销按钮
logout.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
// Launching News Feed Screen
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
);
【问题讨论】:
如果您想在注销时清除首选项,为什么在登录时存储它们? 发布你的代码,我会在 5 分钟内给你解决方案.. 我建议您在使用共享首选项保存或检索代码时检查您的代码,因为在所有活动中都可以访问共享首选项。 SharedPreferences 首选项 =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE); SharedPreferences.Editor 编辑器 = preferences.edit();编辑器.clear(); editor.commit();将此代码粘贴到注销 onclicklistener @GB_Bhayani 感谢帮助它正在工作 【参考方案1】:SharedPreferences preferences =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.apply();
finish();
【讨论】:
【参考方案2】:在 Kotlin 中,您可以使用此代码清除 sharedpreference 数据
private val sharedPref = "sharedpreference"
val sharedPreferences: SharedPreferences = context.getSharedPreferences(sharedPref, Context.MODE_PRIVATE)
val editor = sharedPreferences.edit()
editor.clear()
editor.apply()
【讨论】:
【参考方案3】:试试这个!
logout.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
// Launching News Feed Screen
SharedPreferences preferences =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.apply();
finish();
);
【讨论】:
【参考方案4】:SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mPrefs.edit();
editor.clear();
editor.commit();
【讨论】:
【参考方案5】:这很简单。就像你把数据保存在SharedPrefernce
SharedPreferences sp = getSharedPreferences("MYKEY",0);
SharedPreferences.Editor editor = sp.edit();
editor.putString("username" , username);
editor.putString("password" , password);
现在您可以像在应用的任何类中一样检索,
SharedPreferences sp = getSharedPreferences("MYKEY",0);
String uname = sp.getString("username");
String pwd = sp.getString("password");
为了清除您的用户名和密码
editor.clear();
editor.commit();
或
editor.remove("username");
editor.remove("password");
editor.commit();
【讨论】:
【参考方案6】:我认为您在理解 android 中的共享首选项时遇到了麻烦。
根据官方文档
要为您的应用程序获取 SharedPreferences 对象,请使用以下两种方法之一 方法:
getSharedPreferences() - 如果您需要多个首选项,请使用它 由名称标识的文件,您使用第一个参数指定。
getPreferences() - 如果您只需要一个首选项文件 你的活动。因为这将是您唯一的首选项文件 活动,您不提供名称。
你应该有一个上下文来使用上述两种方法。
共享首选项也存储为键值对,因此清除应该意味着您将值设置为一些空字符串。
更多细节和更好的解释你可以在这里阅读http://developer.android.com/guide/topics/data/data-storage.html#pref 和http://www.vogella.com/tutorials/AndroidFileBasedPersistence/article.html
希望这会有所帮助。
干杯!
【讨论】:
【参考方案7】:为什么不写一个 SharedPreference 实用程序类。这可以从这两个活动中访问。
【讨论】:
我没有投反对票,但很可能是因为您的回答根本没有描述性。提供有关您的“SharedPreference 实用程序类”是什么以及它如何工作的更多详细信息。也许给一些代码。以上是关于注销清除 SharedPreferences的主要内容,如果未能解决你的问题,请参考以下文章