очистить значение общих предпочтений

Я как бы новичок в программировании на 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();
        }
    });


}

person banshee1907    schedule 06.04.2016    source источник


Ответы (4)


Попробуйте вот так

SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
Editor editor = pref.edit();
editor.clear();
editor.commit();
person Abhishek Patel    schedule 06.04.2016

Вот метод

 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);
}
person Yasir Tahir    schedule 06.04.2016

Поскольку вы упомянули, что НЕ хотите удалять значение входа в систему из общих предпочтений, а только запрашивать страницу входа каждый раз, я считаю, что вы ищете что-то, где вы хотите программно очистить кеш приложения.

Пожалуйста, проверьте, Очистить кеш в приложении Android программно и Очистить данные приложения программно

Также стоит прочитать этот замечательный ответ - Не удаляйте базу данных или общие настройки в ясном приложении

person Natarajan Raman    schedule 06.04.2016

Чтобы удалить их все SharedPreferences.Editor.clear () с последующей фиксацией ()

person Dilip    schedule 26.04.2016
comment
Предпочтения SharedPreferences = getSharedPreferences (Mypref, 0); предпочтения. редактировать (). удалить (общий_ключ_представления) .commit (); - person Dilip; 26.04.2016