gpt4 book ai didi

java - Android SharedPreferences 重置为默认值。重新启动应用程序后

转载 作者:行者123 更新时间:2023-12-01 14:13:16 25 4
gpt4 key购买 nike

有时,重新启动应用后会重置 API 级别 > 13 的设备上的共享首选项。共享首选项是在应用程序开始时设置的(应用程序的第一个 Activity )。

代码:

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

我不知道我做错了什么以及为什么会发生这种情况。在收到详细 Activity 的推送通知后,我特别注意到了这一点。

最佳答案

您是否像这样在应用程序开头调用保存方法?

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

关于java - Android SharedPreferences 重置为默认值。重新启动应用程序后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18317051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com