2017-02-08 2 views
0

Я сделал один класс с именем сессии, и я сохранить мои все общие предпочтения оттуда только как ..Общие предпочтения не получить правильный Значение по умолчанию

private SharedPreferences prefs; 

    public Session(Context cntx) { 
     // TODO Auto-generated constructor stub 
     prefs = PreferenceManager.getDefaultSharedPreferences(cntx); 
    } 

Теперь из приложения пользовательского интерфейса я называю эту сессию и мой всем переменным техника его подводит получить там значение по умолчанию, как ..

public void setIsFirsTimeCall(boolean IsFirsTimeCall) { 
     prefs.edit().putBoolean("IsFirsTimeCall", IsFirsTimeCall).commit(); 
     prefsCommit(); 
    } 

    public boolean getIsFirsTimeCall() { 
     return prefs.getBoolean("IsFirsTimeCall", true); 
    } 

так, когда я называю для getIsFirsTimeCall(), то он будет давать ложные мне

Я не знаю, почему он делает это Но когда я копировать и распространять этот проект на другой компьютер, то его работа отлично Вы когда-нибудь кажется, этот тип поведения

+0

попробуйте удалить приложение с устройства/эмулятора и повторно запустить его. –

+0

Вы пытались использовать .apply() вместо .commit()? Кроме того, вы можете попытаться получить логическое возвращаемое значение операции commit() –

+0

удалить общий метод для сохранения и извлечения префайлов, каждый раз, когда вы используете новый редактор при совершении. Это помогло мне однажды – Redman

ответ

0

Я не знаю, если это может помочь вам решить:

Я думаю, что вы можете сделать что-то вроде этого:

public static void setIsFirsTimeCall(Context cntx, boolean IsFirsTimeCall) { 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(cntx); 
    prefs.edit().putBoolean("IsFirsTimeCall", IsFirsTimeCall).commit(); 
    prefsCommit(); 
} 

public static boolean getIsFirsTimeCall(Context cntx) { 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(cntx); 
    return prefs.getBoolean("IsFirsTimeCall", true); 
} 

Я переместил объявление и определение prefs из конструктора Session класса, внутри каждого метода, которые требуют его. Каждый из этих методов - static, поэтому вы можете вызвать их из-за пределов класса Session следующим образом: Session.getIsFirsTimeCall(yourContext) и так далее.

Возможно, вам нужно изменить поведение своего кода, потому что я не знаю, может ли ваш метод prefsCommit() стать static, в противном случае вы не можете называть его статическим методом.

Надеюсь, это поможет вам

Смежные вопросы