1

私の質問は:私が電話した場合:

PreferenceManager.getDefaultSharedPreferences(getApplicationContext())

Activities私のアプリケーションでは2つの異なるファイルがありますが、同じSharedPreferencesファイルを参照していますか?

より具体的には、にrememberMeチェックボックスがありますSharedPreferences。アプリケーションの 2 つの場所から変更できます。ある場所で変更しても、2 番目の場所では有効にならないようです。

編集: 私はこのコードを持っています:

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);
            }
        }
    });

基本的に、このポップアップウィンドウSharedPreferencesrememberMeチェックボックスをオンにして閉じてから再度開くと、設定を含むポップアップウィンドウが作成されます。なんらかの理由で再度チェックされず、その他Activity(Setting Activity) では、この変更も反映されていないことがわかります。

4

3 に答える 3

2

これを使用して 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);
于 2013-05-08T11:20:39.100 に答える
1

コメントを回答に変換し、

あなたの問題はcommit、あなたの好みがないことです。SharedPreference後にのみ更新されますcommit

于 2013-05-08T11:47:39.530 に答える