我有登录页面,将用户名和密码保存到共享首选项 . 我有另一个包含注销按钮的Activity类 . 我想在点击退出按钮时清除共享偏好设置 . 问题是我没有从这个类获得SharedPreferences . 我怎样才能获得SharedPreferences?
LoginPage
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 回答
试试这个 !
我认为你在理解android中的共享首选项时遇到了麻烦 .
根据官方文件
您应该有一个上下文来使用上述两种方法 .
共享首选项也存储为键值对,因此清除应该意味着您将值设置为某个空字符串 .
有关详细信息和更好的解释,请参阅此处http://developer.android.com/guide/topics/data/data-storage.html#pref和http://www.vogella.com/tutorials/AndroidFileBasedPersistence/article.html
希望这会有所帮助 .
干杯!
它很简单 . 就像你在
SharedPrefernce
中保存数据一样现在,您可以像在任何类别的应用中一样检索,
并清除您的用户名和密码
要么
为什么不编写SharedPreference实用程序类 . 这可以从两个活动中访问 .