如何在Android Studio中实现井字棋游戏的玩家获胜分数保存与显示?
井字棋玩家1累计获胜次数实现方案
核心优化思路
放弃用列表存储分数的方案,改用全局变量直接记录获胜次数,搭配TextView(而非EditText,EditText为输入控件,用于展示静态数据易引发异常)来显示次数,若需要重启APP后保留数据,可结合SharedPreferences实现持久化。
具体实现步骤
- 全局变量声明:在Activity或ViewModel中定义
private int player1Wins = 0;,用于实时记录玩家1的获胜次数。 - 获胜触发更新:当检测到玩家1获胜时,执行
player1Wins++;,随后同步更新界面显示。 - 界面更新操作:找到布局中用于展示次数的TextView(假设id为
tv_player1_wins),调用tv_player1_wins.setText("玩家1获胜次数:" + player1Wins);完成显示更新。 - 崩溃规避要点:
- 确保控件初始化完成后再调用setText方法,禁止在
onCreate生命周期之前操作UI控件 - 避免使用EditText展示静态数据,改用TextView更安全稳定
- 若之前因列表操作崩溃,检查是否存在列表为空时调用get方法、或未初始化控件就赋值的情况
- 确保控件初始化完成后再调用setText方法,禁止在
可选:持久化获胜次数
若需要APP重启后保留获胜数据,可使用SharedPreferences:
- 保存次数:
SharedPreferences sp = getSharedPreferences("TicTacToe", MODE_PRIVATE); sp.edit().putInt("player1Wins", player1Wins).apply();
- 读取初始次数(在Activity的
onCreate方法中):
SharedPreferences sp = getSharedPreferences("TicTacToe", MODE_PRIVATE); player1Wins = sp.getInt("player1Wins", 0); tv_player1_wins.setText("玩家1获胜次数:" + player1Wins);
内容的提问来源于stack exchange,提问作者Visible Happiness
相关产品推荐
相关产品推荐

