0

나는 SharedPreferences를 사용하여 응용 프로그램에 필요한 사용자 체중 정보를 보관합니다. 문제는 설치 후 자동으로 기본값 (예 : 75kg)을 설정하는 방법입니다. .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

+0

SharePreferences API를 사용하면 키가 목록에 없으면 기본값을 가져올 수 있으므로 기본값을 시작으로 설정할 필요가 없습니다. – DeeV

+0

@ zgc7009 예. 그것이 내가 원하는 것입니다. 응용 프로그램의 첫 번째 시작에서 나는 예를 들어 체중 값을 설정해야합니다. 75kg (0 또는 null 대신)이므로 일부 알고리즘은 올바르게 계산됩니다. 이것을 달성 할 수있는 방법을 제안 해 주시겠습니까? 편집 :이 솔루션을 찾았습니다 : http://stackoverflow.com/a/13237848/1828352, 사용자가 Google Play를 통해 앱을 업데이트하면 어떻게됩니까? 값이 기본값으로 한 번 더 설정되거나 설정되지 않습니까? – fragon

답변

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

컴파일되지 않습니다. getInt()에 디폴트 치로서 null를 건네 줄 수 없습니다. – xvlcw

관련 문제