有时在重新启动应用后,会重置API级别>设备上的共享偏好设置。 13。 共享偏好设置在应用程序的开头(应用程序的第一个活动)。
代码:
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;
}
我不知道我做错了什么以及为什么会这样。在收到详细说明的推送通知后,我特别注意到了这一点。
答案 0 :(得分: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();
}