【问题标题】:clear the value of sharedpreferences清除 sharedpreferences 的值
【发布时间】:2016-04-26 14:00:51
【问题描述】:

我是 android 编程的新手,我正在设计一个具有登录页面和主页的程序。当我第一次使用用户名和密码登录时,我创建了一个共享首选项来记住该用户名以及每当我进入程序,它会跳过登录页面并将我重定向到主页。我想要做的是,当我在登录页面中按下注销按钮时,我希望共享首选项忘记我数据库中用户名的值(它不会从数据库中删除它)和强制我使用相同或不同的用户名和密码再次登录,当我进入应用程序时我不想被重定向到主页。我发现了 SharedPreferences.Editor.remove() 、 SharedPreferences.Editor.clear() 之类的东西, commit() 等。但是代码不起作用。你能帮忙吗?

public static class SaveSharedPreference {
        static final String PREF_USER_NAME = "username";

    static SharedPreferences getSharedPreferences(Context ctx) {
        return PreferenceManager.getDefaultSharedPreferences(ctx);
    }

    public static void setUserName(Context ctx, String userName) {
        SharedPreferences.Editor editor = getSharedPreferences(ctx).edit();
        editor.putString(PREF_USER_NAME, userName);
        editor.commit();
    }

    public static String getUserName(Context ctx) {
        return getSharedPreferences(ctx).getString(PREF_USER_NAME, "");
    }
}

Button btnSignIn, btnSignUp;
    LoginDataBaseAdapter loginDataBaseAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_uye_kayit_giris);





    if (SaveSharedPreference.getUserName(UyeKayitGirisActivity.this).length() == 0) {
        Intent i = new Intent(UyeKayitGirisActivity.this, MainActivity.class);
        startActivity(i);
        // finish();
    }



        // create a instance of SQLite Database
        loginDataBaseAdapter = new LoginDataBaseAdapter(this);
        loginDataBaseAdapter = loginDataBaseAdapter.open();

        // Get The Refference Of Buttons
        btnSignIn = (Button) findViewById(R.id.buttonSignIN);
        btnSignUp = (Button) findViewById(R.id.buttonSignUP);

        // Set OnClick Listener on SignUp button
        btnSignUp.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // TODO Auto-generated method stub

                /// Create Intent for SignUpActivity  abd Start The Activity
                Intent intentSignUP = new Intent(getApplicationContext(), SignUPActivity.class);
                startActivity(intentSignUP);
            }
        });




    Button btn_exit;
    // super.onCreate(savedInstanceState);
    //   setContentView(R.layout.main1);

    btn_exit = (Button) findViewById(R.id.buttonLogOUT);
    btn_exit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

// WHAT SHOULD I WRITE IN HERE?????????????


            Toast.makeText(UyeKayitGirisActivity.this, "ÜYE GİRİŞİ TEKRAR ZORUNLU HALE GETİRİLDİ!!!", Toast.LENGTH_LONG).show();
        }
    });


}

【问题讨论】:

    标签: android android-sharedpreferences


    【解决方案1】:

    这样试试

    SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    Editor editor = pref.edit();
    editor.clear();
    editor.commit();
    

    【讨论】:

      【解决方案2】:

      方法如下

       private void removePreference(Context context, String prefsName, String key) {
          SharedPreferences preferences = context.getSharedPreferences(prefsName, Activity.MODE_PRIVATE);
          android.content.SharedPreferences.Editor editor = preferences.edit();
          editor.remove(key);
          editor.apply();
      }
      

      你可以这样称呼它:

      public void removeUser() {
          removePreference(context, FILENAME, KEY_USER);
      }
      

      【讨论】:

        【解决方案3】:

        由于您提到您不想从共享首选项中删除登录值,但每次只要求登录页面,我相信您正在寻找想要以编程方式清除应用程序缓存的东西。

        请检查Clear Cache in Android Application programmaticallyClear Application's Data Programmatically

        这个精彩的回答也值得一读——Don't delete database or shared Preference on clear app

        【讨论】:

          【解决方案4】:

          删除所有 SharedPreferences.Editor.clear() 后跟一个 commit()

          【讨论】:

          • SharedPreferences 首选项 = getSharedPreferences("Mypref", 0); preferences.edit().remove("shared_pref_key").commit();
          猜你喜欢
          • 1970-01-01
          • 2014-08-01
          • 2013-03-06
          • 1970-01-01
          • 2014-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多