How to set a default value to SharedPreferences programmatically?

蓝咒 提交于 2019-12-04 01:46:43

问题


I am using SharedPreferences to keep the information about user's weight, which I need in my application. The problem is, how to set a default value (eg. 75 kg) automatically after installation? I know how to do it via .xml, but how to do this programmatically?

My code:

public class SettingsDialogFragment extends DialogFragment{

public static final String PREFS_NAME = "settings";
public Dialog onCreateDialog(Bundle savedInstanceState) {


builder.setPositiveButton(R.string.save, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {

                Data.weight = weight;
                SharedPreferences prefs = getActivity().getSharedPreferences(PREFS_NAME, 0);
                Editor editor = prefs.edit();
                editor.putInt("key_weight", weight);
                editor.commit();
                Data.ifMale = ifMale;
                checkedRadio = rg.getCheckedRadioButtonId();
                System.out.println("numer radio" +checkedRadio);
            }
            });
return builder.create();
    }
}

回答1:


Try this way, please.

        SharedPreferences prefs = getActivity().getSharedPreferences(
                PREFS_NAME, 0);
        if (prefs.getInt("key_weight", null) == null) {
            Editor editor = prefs.edit();
            editor.putInt("key_weight", 75);
            editor.commit();
        }

For first time use this, or else use your code only(means without if condition).




回答2:


getInt takes a default value.

prefs.getInt("key_weight", 75)

Or in a more mainstream style....

public class AppPreferences {

    private SharedPreferences mPreferences;

    Public AppPreferences(SharedPreferences preferences)
    {
         this.mPreferences = preferences;
    }

    private static final String KEY_WEIGHT_KEY = "key_weight";
    private static final int DEFAULT_KEY_WEIGHT = 75;

    public static  int getKeyWeight()
    {
      return mPreferences.getInt(KEY_WEIGHT_KEY,DEFAULT_KEY_WEIGHT);

    }
}


来源:https://stackoverflow.com/questions/26765376/how-to-set-a-default-value-to-sharedpreferences-programmatically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!