gpt4 book ai didi

java - SharedPreferences 未加载

转载 作者:行者123 更新时间:2023-12-02 03:26:11 24 4
gpt4 key购买 nike

我在物理设备(Samsung Galaxy J4+)上测试了该应用程序。我打开它并输入数据(发往SharedPreferences)。然后...

SharedPreferences 在使用我的三星屏幕底部的“<”按钮使应用程序 UI 消失后点击应用程序图标时不会加载,但它们 <使用“|||”使应用程序 UI 消失后,点击应用程序图标时执行加载或我的三星屏幕底部的“O”按钮。后者让我得出结论,保存和加载方法都可以正常工作。

加载方法 (importSavedData()) 完全嵌入 MainActivity 类内的 onCreate() 方法中。应用中不包含其他 Activity 生命周期方法 [onStart()、on Resume ()、onPause () 等]。

每次将数据输入应用程序时(通过按下按钮发生),都会调用保存方法 (saveData()),因此我认为没有必要在 onStop 中包含该方法() 或 onDestroy() 方法。我确实尝试在 editor.apply() 和 editor.commit() 之间切换,但没有成功。

public class MainActivity extends AppCompatActivity {

int winnerA;
int winnerB;

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

public void importSavedData() {
SharedPreferences savedData = getSharedPreferences("savedData",
Context.MODE_PRIVATE);
winnerA = savedData.getInt("winnerA_SP", 0);
winnerB = savedData.getInt("winnerB_SP", 0);
}

public void saveData(){
SharedPreferences savedData = getSharedPreferences("savedData",
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = savedData.edit();
editor.putInt("winnerA_SP", winnerA);
editor.putInt("winnerB_SP", winnerB);
editor.apply();
}

/* saveData() is executed when the user has changed
the value of winnerA or winnerB by pressing one of the buttons in the
activity. */

}

最佳答案

像这样重写onRestart()onResume():

@Override
public void onRestart() {
super.onRestart();
importSavedData();
}

@Override
public void onResume() {
super.onResume();
importSavedData();
}

这样每次应用程序返回时,都会从 SharedPreferences 读取值。

关于java - SharedPreferences 未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56906685/

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