You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android游戏多关卡最高分求和显示及SharedPreferences、Firebase问题求助

游戏开发问题解决方案

1. 显示所有关卡最高分总和

当前你用SharedPreferences存储了每关的最高分,要计算总和只需遍历所有关卡的存储键,累加对应值即可:

// 获取SharedPreferences实例
SharedPreferences gamePrefs = getSharedPreferences("GameHighScores", MODE_PRIVATE);
int totalHighScoreSum = 0;

// 遍历1到10关,累加每关最高分
for (int level = 1; level <= 10; level++) {
    String key = "Level_" + level + "_HighScore";
    int levelHighScore = gamePrefs.getInt(key, 0); // 未存储时默认0
    totalHighScoreSum += levelHighScore;
}

// 更新TextView显示总和
TextView totalScoreView = findViewById(R.id.total_high_score_text);
totalScoreView.setText("总最高分: " + totalHighScoreSum);

如果需要实时更新(比如某关刷新最高分后立即更新总和),可以在更新单关最高分的代码后,重新执行上述累加逻辑并刷新TextView。


2. 通过SharedPreferences跨Activity传递值

SharedPreferences是应用级别的持久化存储,不需要额外“传递”,直接在目标Activity中读取即可:

在源Activity存储值(如果还没存)

SharedPreferences.Editor editor = getSharedPreferences("GameHighScores", MODE_PRIVATE).edit();
editor.putInt("Level_5_HighScore", 1200);
editor.apply();

在目标Activity读取值

SharedPreferences gamePrefs = getSharedPreferences("GameHighScores", MODE_PRIVATE);
int level5HighScore = gamePrefs.getInt("Level_5_HighScore", 0);
// 用读取到的值做后续处理

如果是临时传递非持久化数据,建议用Intent.putExtra(),但SharedPreferences更适合存储需要长期保留的跨页面数据。


3. Firebase Database获取值失败排查

按以下步骤逐一排查:

  • 检查数据库规则:默认规则仅允许认证用户读写,未登录会失败。测试阶段可临时修改规则(上线前务必改回安全规则):

    {
      "rules": {
        ".read": true,
        ".write": true
      }
    }
    
  • 验证引用路径:确保DatabaseReference的路径与Firebase控制台中的节点完全一致(注意大小写、节点名称拼写):

    // 示例:正确指向"highscores"节点
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference("highscores");
    
  • 添加错误监听:通过onCancelled回调获取具体错误信息,定位问题:

    ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            // 处理数据
        }
    
        @Override
        public void onCancelled(DatabaseError error) {
            Log.e("FirebaseDebug", "获取失败: " + error.getMessage() + " | " + error.getDetails());
        }
    });
    
  • 检查配置与权限:

    • 确认google-services.json已正确放置在app/目录,包名与Firebase项目一致;
    • AndroidManifest.xml中添加网络权限:
      <uses-permission android:name="android.permission.INTERNET" />
      
    • 设备网络正常,且Firebase服务可访问。

内容的提问来源于stack exchange,提问作者Twitch Arşivim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 03:33:12