0

我使用SharedPreferences来保存关于用户体重的信息,这是我在我的应用程序中需要的。问题是,安装后如何自动设置默认值(例如75公斤)?我知道如何通过.xml来完成它,但是如何以编程方式执行此操作?如何以编程方式将默认值设置为SharedPreferences?

我的代码:

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

检查是否是第一次运行您的应用程序,如果是这样,请将默认首选项设置为您希望的默认首选项。我想这就是你要问的。 – zgc7009 2014-11-05 19:28:21

+0

如果密钥不在列表中,SharePreferences API还允许您获取默认值,因此您可能不需要将默认值设置为开头。 – DeeV 2014-11-05 19:29:20

+0

@ zgc7009是的。这就是我想要达到的目标。在应用程序的第一次启动时,我想将权重值设置为例如。 75公斤(而不是0或零),以便一些算法正确计数。你能提出任何方法来达到这个目的吗? 编辑:我找到了这个解决方案:http://stackoverflow.com/a/13237848/1828352,但我的问题是,如果用户通过谷歌播放更新应用程序会发生什么?该值会被再次设置为默认值? – fragon 2014-11-05 19:34:58

回答

2

试试这个方法,请。

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

第一次使用这个,或者只使用你的代码(意味着没有条件)。

+0

不编译。无法将null作为默认值传递给'getInt()'。 – xvlcw 2018-02-06 14:28:26

相关问题