注销清除SharedPreferences

时间:2014-06-11 13:04:22

标签: android sharedpreferences logout

我有登录页面,将用户名和密码保存到共享首选项。我有另一个包含注销按钮的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);
            }
        });

7 个答案:

答案 0 :(得分:28)

试试这个!

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.commit();
             finish();
 });

答案 1 :(得分:1)

它很简单。就像您在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();

答案 2 :(得分:1)

我认为您在理解Android中的共享首选项时遇到了麻烦。

根据官方文件

  

要获取应用程序的SharedPreferences对象,请使用以下两种方法之一   方法:

     

getSharedPreferences() - 如果您需要多个首选项,请使用此选项   按名称标识的文件,使用第一个参数指定。

     

getPreferences() - 如果您只需要一个首选项文件,请使用此选项   你的活动。因为这将是您的唯一首选项文件   活动,你不提供名字。

你应该有一个上下文来使用上述两种方法。

此外,共享首选项存储为键值对,因此清除应表示您将值设置为某个空字符串。

有关详细信息和更好的说明,请参阅此处http://developer.android.com/guide/topics/data/data-storage.html#prefhttp://www.vogella.com/tutorials/AndroidFileBasedPersistence/article.html

希望这会有所帮助。

干杯!

答案 3 :(得分:0)

为什么不编写SharedPreference实用程序类。这可以从两个活动中访问。

答案 4 :(得分:0)

SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mPrefs.edit();
editor.clear();
editor.commit();

答案 5 :(得分:0)

在Kotlin中,您可以使用此代码清除共享的首选项数据

private val sharedPref = "sharedpreference"

val sharedPreferences: SharedPreferences = context.getSharedPreferences(sharedPref, Context.MODE_PRIVATE)
            val editor = sharedPreferences.edit()
            editor.clear()
            editor.apply()

答案 6 :(得分:0)

SharedPreferences preferences =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE);
             SharedPreferences.Editor editor = preferences.edit();
             editor.clear();
             editor.apply();
             finish();