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

Android跨Activity传int时try块内Button点击无响应如何解决

问题根源

  • 你当前的代码是在FirstActivity初始化阶段就尝试读取EditText的输入值并解析,此时用户还未完成输入,inputCorrect.getText().toString()大概率是空值或者非法数值,直接触发NumberFormatException走catch分支,给按钮设置点击事件的逻辑完全没执行,所以点击按钮无响应。
  • 你把点击事件移出try块后找不到resultPage变量,是因为该变量是在try块内部声明的,属于块级作用域,外部无法访问。

解决方法

把读取输入、解析数值、创建Intent的逻辑全部移到按钮的点击事件回调内部执行,操作顺序改成:用户点击按钮时,才去读输入框内容、校验合法性、再跳转传值。

修改后FirstActivity参考代码

EditText inputCorrect = findViewById(R.id.inputCorrect);
Button calcButton = findViewById(R.id.calculateButton);

// 初始化阶段就完成按钮点击事件注册
calcButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 点击时再读取输入内容做解析
        try {
            int correctAmount = Integer.parseInt(inputCorrect.getText().toString());
            Intent resultPage = new Intent(getApplicationContext(), resultActivity.class);
            resultPage.putExtra("c_a", correctAmount);
            startActivity(resultPage);
        } catch (NumberFormatException nfe) {
            // 非法输入时给用户明确提示,不要空吞异常
            Toast.makeText(FirstActivity.this, "请输入合法的数字", Toast.LENGTH_SHORT).show();
        }
    }
});

SecondActivity代码优化建议

增加空值兼容,避免取不到参数时崩溃:

// 第二个参数为取不到对应值时的默认值,可根据业务需求调整
int value = getIntent().getIntExtra("c_a", 0);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:06:05