2013-05-08 3 views
1

Мой вопрос: Если я позвоню:Есть ли только один объект общих предпочтений для каждого приложения?

PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) 

в двух различных Activities в моем приложении, делает это относится к тому же SharedPreferences файл?

Более конкретно, у меня есть rememberMe флажок в моем SharedPreferences. , который я могу изменить из двух мест в моем приложении. Похоже, когда я меняю его в одном месте, он не вступает в силу во втором месте.

Edit: У меня есть этот код:

public View createSettingsOverlay(){ 
    ViewGroup root = (ViewGroup)findViewById(R.id.absoluteOverlay); 

    LayoutInflater inflater = getLayoutInflater(); 
    View result = inflater.inflate(R.layout.overlay_baloon_settings, root, false); 

    ((TextView)result.findViewById(R.id.loginText)).setText(application.getCurrentlyLoggedUser()); 
    ((TextView)result.findViewById(R.id.passwordText)).setText(application.getCurrenlyLoggedPass()); 
    ((TextView)result.findViewById(R.id.loginTimeText)).setText(application.getTimeOfLogin().toString()); 
    ((TextView)result.findViewById(R.id.settings_popup_server_url)).setText(application.getCurrentUrl()); 

    //Emil Edit 
    CheckBox rememberMe = (CheckBox)result.findViewById(R.id.cbRememberMe); 
    //boolean rememberMePreference = PreferenceManager.getDefaultSharedPreferences(DynamicDataActivity.this).getBoolean(SettingsActivity.REMEMBER_ME_CHECKBOX_KEY, false); 
    Log.d(TAG, "Remember Me set in the preference is: " + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean(SettingsActivity.REMEMBER_ME_CHECKBOX_KEY, false)); 

    rememberMe.setChecked(PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean(SettingsActivity.REMEMBER_ME_CHECKBOX_KEY, false)); 
    rememberMe.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    { 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      Log.d(TAG, "boolean isChecked is: " + isChecked); 
      if (isChecked) 
      { 
       Log.d(TAG, "Remember me checkbox in setting overlay set to True"); 
       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putBoolean(SettingsActivity.REMEMBER_ME_CHECKBOX_KEY, true); 
       application.setRememberMeChecked(true); 
      } 
      else 
      { 
       Log.d(TAG, "Remember me checkbox in setting overlay set to False"); 
       PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putBoolean(SettingsActivity.REMEMBER_ME_CHECKBOX_KEY, false); 
       application.setRememberMeChecked(false); 
      } 
     } 
    }); 

Который в основном создается всплывающее окно с установкой от SharedPreferences когда я проверяю rememberMe флажок в этом всплывающем окне, закрыть его и открыть его снова. по какой-то причине он не проверяется снова, в другом Activity (настройка Activity), я вижу, что это изменение также не вступало в силу.

Заранее за вашу помощь.

+0

'Похоже, когда я меняю его в одном месте, он не вступает в силу во втором месте.' Вы можете это объяснить? – Pragnani

+0

@ Прагнани, см. Обновленный вопрос. –

+1

Ваша проблема в том, что у вас нет 'commit', sharedPreference будет обновляться только после' commit' – Pragnani

ответ

1

Преобразование комментарии ответить,

Ваша проблема у вас не commit ваши предпочтения. SharedPreference будет обновляться только после commit

+1

Спасибо за вашу помощь мужчина:) –

+0

@EmilAdz Добро пожаловать друг. – Pragnani

0

использует это для ПОЛУЧИТЬ SharedPreferences (myPrefs ваш файл):

Для сохранения:

SharedPreferences prefs = getSharedPreferences("myPrefs", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putBoolean("rememberMe", yourState); 
editor.commit(); 

Для ПОЛУЧАЕТЕ:

SharedPreferences prefs = getSharedPreferences("myPrefs", Context.MODE_PRIVATE); 
boolean state = prefs.getBoolean("rememberMe", state_by_default); 
+0

Но если я всегда получаю defaultSharedPreferences, он должен ссылаться на тот же файл, верно? –

+0

Да, это должно быть связано с тем же файлом, я думаю. – k0nig

0

Да, по умолчанию общий прив файл одинаков для применения контекст.

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