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

如何在onBackPressed中处理分数加减结果?计分器APP开发疑问

解决ScoreKeeper APP的分数加减问题

看起来你已经搞定了从第二个Activity返回数据并显示的基础功能,现在卡在了把返回的数值和当前分数做加减运算这一步。我来帮你梳理问题,给出具体的修改方案:

问题分析

你当前的代码尝试直接把返回的字符串转成整数后加固定值10,但没正确获取mFirstScore的当前分数,也没处理输入非数字的异常情况,另外你注释里提到的message5参数,也需要确保在返回时正确传递。

解决方案步骤


1. 确保第二个Activity返回正确的分数参数

如果你的需求是返回要加减的分数(比如加分值和减值),需要在onBackPressed里同时传递对应参数:

@Override
public void onBackPressed() {
    Intent i = new Intent();
    // 传递要添加的分数(假设mEditText是加分输入框)
    i.putExtra("add_points", mAddEditText.getText().toString());
    // 传递要减去的分数(如果有减分输入框的话)
    i.putExtra("subtract_points", mSubtractEditText.getText().toString());
    setResult(RESULT_OK, i);
    Toast.makeText(this, "分数已提交", Toast.LENGTH_LONG).show();
    finish();
}

2. 在MainActivity中处理分数加减逻辑

核心是:先获取mFirstScore的当前分数,再结合返回的数值运算,同时处理输入非数字的异常:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1 && resultCode == RESULT_OK) {
        try {
            // 1. 获取当前分数,初始状态默认0(比如显示"0")
            int currentScore = Integer.parseInt(mFirstScore.getText().toString());
            
            // 2. 获取返回的加分值,空输入则默认0
            String addStr = data.getStringExtra("add_points");
            int addPoints = addStr.isEmpty() ? 0 : Integer.parseInt(addStr);
            
            // 3. 获取返回的减值,空输入则默认0
            String subtractStr = data.getStringExtra("subtract_points");
            int subtractPoints = subtractStr.isEmpty() ? 0 : Integer.parseInt(subtractStr);
            
            // 4. 计算新分数
            int newScore = currentScore + addPoints - subtractPoints;
            
            // 5. 更新显示
            mFirstScore.setText(String.valueOf(newScore));
        } catch (NumberFormatException e) {
            // 输入非数字时提示用户,避免崩溃
            Toast.makeText(this, "请输入有效的数字分数", Toast.LENGTH_SHORT).show();
        }
    }
}

3. 额外优化建议

  • 在输入框的XML里设置android:inputType="numberSigned",限制用户只能输入数字,减少异常情况
  • 初始状态下把mFirstScore的文本设为"0",确保第一次运算不会出现解析错误

关键提醒

  • 必须处理NumberFormatException,否则用户输入非数字内容时APP会崩溃
  • 如果你的需求只是单一的加分或减分,只需要传递对应参数即可,不用保留两个输入框

内容的提问来源于stack exchange,提问作者Azkan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 08:32:41