清除共享偏好的价值

时间:2016-04-06 05:12:21

标签: android android-sharedpreferences

我对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();
        }
    });


}

4 个答案:

答案 0 :(得分:1)

试试这个

int i = 1;              // i = 1
list[i] = list[i - 1];  // list[1] = list[1 - 1]; list[0] == 1
                        // list is now {1, 1, 3, 4, 5, 6}

i++;                    // i = i + 1 # i is now 2
list[i] = list[i - 1];  // list[2] = list[2 - 1]; list[1] == 1
                        // list is now {1, 1, 1, 4, 5, 6}

i++;                    // i = i + 1; i = 3
list[i] = list[i - 1];  // list[3] = list[3 - 1]; list[2] == 1
                        // list is now {1, 1, 1, 1, 5, 6}

i++;                    // i = i + 1; i = 4
list[i] = list[i - 1];  // list[4] = list[4 - 1]; list[3] == 1
                        // list is now {1, 1, 1, 1, 1, 6}

i++;                    // i = i + 1; i = 5
list[i] = list[i - 1];  // list[5] = list[5 - 1]; list[4] == 1
                        // list is now {1, 1, 1, 1, 1, 1}

i++;                    // i = i + 1; i = 6
i < list.length;        // i == 6; list.length == 6; 6 < 6 == false
                        // exit the for loop

答案 1 :(得分:0)

由于您已经提到过您不想从共享首选项中删除login的值,而只是每次都要求登录页面,我相信您正在寻找一些您希望以编程方式清除应用程序缓存的内容。

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

还值得一读这个精彩的答案 - Don't delete database or shared Preference on clear app

答案 2 :(得分:0)

这是方法

 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 :(得分:0)

要删除所有SharedPreferences.Editor.clear(),然后是commit()