2015-09-01 3 views
-3

У меня проблема с SharedPreferences в Android. В моем приложении, когда я запускаю выход из системы, мне нужно удалить все сохраненные SharedPreferences, потому что при запуске приложения проверьте, есть ли какие-то SharedPreferences, если есть, мне нужно снова войти в систему, для этого используйте этот кодAndroid delete SharedPreferences

SharedPreferences sharedPreferences = context.getSharedPreferences(name, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.clear(); 
    editor.commit(); 

, но, когда я снова запустить приложение и проверить наличие SharedPreferences с этим кодом

String token = UserDefaultHelper.getStringPreferences(getApplicationContext(), getString(R.string.sharedPreferences_auth_token), ""); 

маркер Строка имеет то же значение, которое имеет перед логаутом, кто-то может объяснить, где ошибка ?

+0

Try sharedPreferences.edit(). удалить ("KeyName") фиксации(). –

+0

Вы уверены, что оно возвращает то же значение? Я думаю, что ваш код прав ... можете ли вы опубликовать свой класс UserDefaultHelper? –

+0

@ MartaTenés Я разместил класс в ответе MicheleLacorte Мне нужно удалить все SharedPreferences, а не только один –

ответ

4

Я отправляю вам и пример, пожалуйста, попробуйте этот код. Она должна работать:

// Declare your shared preference file name 
private static final String PREF_NAME = "MyPrefs"; 

Для удаления всех настроек:

SharedPreferences sharedPrefs = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.clear(); 
editor.commit(); 

Для чтения:

SharedPreferences sharedPrefs = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
String prefString = pref.getString(key, ""); 

Для написания:

SharedPreferences sharedPrefs = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putString(key, "someValue"); 
editor.commit(); 
0

вот мой UserDefaultHelper класс

package com.example.ivan.posteggiaTI.helper; 
import android.content.Context; 
import android.content.SharedPreferences; 
import android.preference.PreferenceManager; 
import com.example.ivan.posteggiaTI.AddParkingActivity; 
/** 
* Created by Ivan on 13/07/2015. 
*/ 
public class UserDefaultHelper { 


private static String name = "posteggiaTI_shared_preferences"; 

public static void setIntPreferences(Context context, String key, int value) { 
    SharedPreferences sharedPreferences = context.getSharedPreferences(name, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putInt(key, value); 
    editor.commit(); 
} 

public static int getIntPreferences(Context context, String key, int defaultValue) { 
    SharedPreferences sharedPreferences = context.getSharedPreferences(name, Context.MODE_PRIVATE); 
    return sharedPreferences.getInt(key, defaultValue); 
} 

public static void setStringPreferences(Context context, String key, String value) { 
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);//context.getSharedPreferences(name, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString(key, value); 
    editor.commit(); 
} 

public static String getStringPreferences(Context context, String key, String defaultValue) { 
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);//context.getSharedPreferences(name, Context.MODE_PRIVATE); 
    return sharedPreferences.getString(key, defaultValue); 
} 

public static void setBoolPreferences(Context context, String key, Boolean value) { 
    SharedPreferences sharedPreferences = context.getSharedPreferences(name, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putBoolean(key, value); 
    editor.commit(); 
} 

public static boolean getBoolPreferences(Context context, String key, boolean defaultValue) { 
    SharedPreferences sharedPreferences = context.getSharedPreferences(name, Context.MODE_PRIVATE); 
    return sharedPreferences.getBoolean(key, defaultValue); 
} 

public static void setDoublePreferences(Context context, String key, double value){ 
    SharedPreferences sharedPreferences = context.getSharedPreferences(name, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putLong(key, Double.doubleToRawLongBits(value)); 
    editor.commit(); 
} 

public static double getDoublePreferences(Context context, String key, double doubleValue){ 
    SharedPreferences sharedPreferences = context.getSharedPreferences(name, Context.MODE_PRIVATE); 
    return Double.longBitsToDouble(sharedPreferences.getLong(key, Double.doubleToLongBits(doubleValue))); 
} 

public static void removeAllSharedPreferences(Context context){ 
    SharedPreferences sharedPreferences = context.getSharedPreferences(name, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.clear(); 
    editor.commit(); 
}} 
+0

Вы уверены, что vale строки R.string.sharedPreferences_auth_token - это то же самое, что и posteggiaTI_shared_preferences? –

+0

@ MartaTenés не то же самое, R.string.sharedPreferences_auth_token - это ключевое имя пары ключ-значение. Я использую этот код, потому что мне нужно удалить все пару kay-значение в пути к файлу/posteggiaTI_shared_preferences, если я использую как имя R.string.sharedPreferences_auth_token Я удаляю только соответствующую пару ключ-значение или нет? –

+0

Хорошо, я думаю, ваша проблема в том, что вы пишете и читаете в разных файлах. Обратите внимание, что когда вы пишете, вы пишете имя файла «posteggiaTI_shared_preferences», и когда вы читаете, вы используете эту команду «usePreferenceManager.getDefaultSharedPreferences», которая является файлом по умолчанию, а не созданным вами файлом. Я отправлю вам код и попробую это, пожалуйста. –