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

Android Kotlin如何获取EditText输入值计算后展示结果

Android Fragment中获取EditText输入值完成计算的实现方案

原有代码核心错误

  • 继承关系错误:Fragment不能继承MainActivity(Activity类),必须继承androidx.fragment.app.Fragment
  • 生命周期使用错误:Fragment不能直接调用setContentView加载布局,需在onCreateView中返回加载的视图实例,初始化操作放在onViewCreated中执行
  • EditText取值错误:直接调用parameter1.toString()获取的是EditText控件对象的字符串描述,不是用户输入内容,正确取值方式是edittext.text.toString()
  • 调用逻辑错误:按钮点击监听中调用了不存在的无参result()方法,没有执行取值转换逻辑
  • 缺少异常防护:输入为空、输入非整数时直接调用toInt()会直接抛出异常导致应用崩溃
  • 冗余逻辑:已经接入ViewBinding的前提下,不需要额外调用findViewById查找控件

修正后完整实现代码

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
// 替换成你自己项目下的Binding类导入路径
import com.your.package.databinding.FragmentCheckSkillBinding

class CheckSkillsFragment : Fragment() {
    // ViewBinding实例,onDestroyView时置空避免内存泄漏
    private var _binding: FragmentCheckSkillBinding? = null
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        _binding = FragmentCheckSkillBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        // 绑定计算按钮点击事件
        binding.sumCreatureButton.setOnClickListener {
            calculateAndShowResult()
        }
    }

    private fun calculateAndShowResult() {
        // 获取三个输入框的文本内容,自动去除首尾空格
        val paramInput = binding.parameterFirstPlayerEdittext.text.toString().trim()
        val skillInput = binding.skillFirstPlayerEdittext.text.toString().trim()
        val modifierInput = binding.modifierFirstPlayerEditText.text.toString().trim()

        // 空值校验
        if (paramInput.isEmpty() || skillInput.isEmpty() || modifierInput.isEmpty()) {
            Toast.makeText(requireContext(), "请填写所有数值后再计算", Toast.LENGTH_SHORT).show()
            return
        }

        // 数字格式校验+计算
        try {
            val valueX = paramInput.toInt()
            val skillValue = skillInput.toInt()
            val modifierValue = modifierInput.toInt()
            val randomValue = (0..6).random()
            val finalResult = valueX + skillValue + modifierValue + randomValue
            Toast.makeText(requireContext(), "计算结果:$finalResult", Toast.LENGTH_SHORT).show()
        } catch (e: NumberFormatException) {
            Toast.makeText(requireContext(), "请输入合法的整数数值", Toast.LENGTH_SHORT).show()
        }
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }
}

优化建议

  • 布局中的三个EditText建议添加android:inputType="number"属性,直接唤起数字键盘,从源头减少用户输入非数字内容的概率
  • 不要使用已经废弃的kotlin-android-extensions插件,ViewBinding是目前官方推荐的视图绑定方案
  • 如果需要支持小数计算,把toInt()替换为toDouble()即可,对应调整inputType为numberDecimal

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:42:17