2013-08-19 5 views
0

때때로 앱을 다시 시작하면 API 수준이 13보다 큰 기기에서 sharedpreferences가 재설정됩니다. sharedpreferences는 앱 시작 부분 (앱의 첫 번째 활동)에서 설정됩니다.Android SharedPreferences가 기본값으로 다시 설정됩니다.

코드 :

Public void saveCountry(Context context, String countryCode) { 

    SharedPreferences settingsActivity = context.getSharedPreferences("preferences", Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = settingsActivity.edit(); 
    editor.putString("key_country", countryCode); 
    editor.commit(); 

    setDefaultChannels(context); 
} 

public String getCountry(Context mContext) { 

    SharedPreferences settingsActivity = mContext.getSharedPreferences("preferences", Context.MODE_PRIVATE); 

    String country = settingsActivity.getString("key_country", null); 
    return country; 
} 

내가 잘못하고 어떤 메신저 몰라요 왜이 일어나고있다. 나는 구체적인 활동에 대한 푸시 알림을받은 후 이것을 특별히 알아 챘다.

답변

1

앱의 시작 부분에 저장 방법을 이렇게 호출하고 있습니까?

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    saveCountry(); 

당신이, 당신이 시작할 때마다 그것을 요구하고있다, 그래서 국가가 어떤 데이터로 대체 될 것이기 때문에이 countryCode 아무것도 없었다 시작에서와 동일합니다. 따라서 처음 실행시에만 호출하는 코드가 있어야합니다.

내 앱에서 구현 한 방법은 다음과 같습니다.

boolean firstRun; 
    final SharedPreferences firstRunPref = getSharedPreferences(PREFS_NAME, 0); 
    firstRun = firstRunPref.getBoolean("firstRun", true); 

    if(firstRun==true){ 

    saveCountry(); 

    SharedPreferences.Editor editor3 = firstRunPref.edit(); 
     editor3.putBoolean("firstRun", false); 
     editor3.commit(); 
    } 
관련 문제