【发布时间】:2019-07-05 16:43:05
【问题描述】:
我在物理设备 (Samsung Galaxy J4+) 上测试该应用程序。我打开它并输入数据(发往 SharedPreferences)。那么……
SharedPreferences 在使用三星屏幕底部的“,但它们 在使用“|||”使应用程序 UI 消失后点击应用程序图标时加载或三星屏幕底部的“O”按钮。后者使我得出结论,保存和加载方法都可以正常工作。
加载方法 (importSavedData()) 嵌入在MainActivity 类的onCreate() 方法中。应用中没有包含其他活动生命周期方法 [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. */
}
【问题讨论】:
-
包含您的代码,这将有助于我们更好地解决您的问题。
-
这是您的实际代码吗? importSavedData() 在 onCreate() 里面吗??????!!!