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

Android年龄判断Intent分支跳转异常问题排查

问题原因

分支判断逻辑本身没有问题,核心错误是获取输入值的API调用错误:
你代码中写的int inputage = enterage.getInputType();完全拿不到用户输入的年龄。getInputType()方法的作用是读取EditText的输入类型配置常量(比如数字键盘、密码输入这类配置标识),返回值是固定的系统常量,和用户输入内容无关。你当前设置的输入类型对应的常量值恰好≤12,因此无论用户输入什么年龄,永远触发第一个判断分支,跳转到intent1对应的页面。

修复方案
  • 替换错误的取值逻辑:先读取EditText的文本内容,转换为字符串后再解析为整数,同时增加基础的格式校验,避免用户输入为空、输入非数字时应用崩溃。
  • 补全代码中缺失的闭合大括号:你贴出的代码片段末尾没有补全onClick方法、匿名点击监听器、onCreate方法的收尾右括号,会直接导致编译失败。
修复后的核心实现代码
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // 读取输入框文本内容,去除首尾空格
        String ageInput = enterage.getText().toString().trim();
        // 空输入校验
        if (ageInput.isEmpty()) {
            Toast.makeText(nextscreen.this, "请输入年龄", Toast.LENGTH_SHORT).show();
            return;
        }
        int inputAge;
        // 数字格式校验,避免输入非数字内容崩溃
        try {
            inputAge = Integer.parseInt(ageInput);
        } catch (NumberFormatException e) {
            Toast.makeText(nextscreen.this, "请输入有效的数字年龄", Toast.LENGTH_SHORT).show();
            return;
        }

        // 原有年龄分支判断逻辑无需修改
        if (inputAge <= 12) {
            Intent int1 = new Intent(nextscreen.this, nextscreen1.class);
            startActivity(int1);
        } else if (inputAge <= 17) {
            Intent int2 = new Intent(nextscreen.this, nextscreen2.class);
            startActivity(int2);
        } else {
            Intent int3 = new Intent(nextscreen.this, nextscreen3.class);
            startActivity(int3);
        }
    }
});
额外优化建议
  • 如果不需要用户在跳转后按返回键回到年龄输入页,可以在每一次startActivity()调用后追加finish()方法,销毁当前输入页。
  • 年龄输入框可以在xml布局中直接配置android:inputType="number",限制用户只能输入数字,从源头减少格式错误的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:18:38