Android Studio Java调用自定义模块方法实现EditText计算结果展示
现有代码存在的问题
- 自定义库的
fullThrottle方法是无返回值的,仅在控制台打印日志,Android端无法拿到计算结果回显 - 输入值的获取逻辑写在
onCreate中,应用刚启动用户还未输入就已经读了空值,点击计算时拿到的还是初始的空字符串 - 从EditText获取的输入是字符串类型,未转换为
double就直接传入要求数字参数的方法,会报类型错误 - 重复给
calculateY设置了两次点击事件,属于无效代码 - 结果输出逻辑缺失,拿到计算结果后没有赋值给结果EditText显示
修正后的代码
1. 库模块的JavaMathExample1.java
package com.example.javaprogram; public class JavaMathExample1 { // 改为带返回值的方法,返回计算得到的最大值 public double getMaxValue(double x, double y) { return Math.max(x, y); } }
2. MainActivity.java
package com.example.testdemo; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.example.javaprogram.JavaMathExample1; public class MainActivity extends AppCompatActivity { EditText calculateX, calculateY, output; JavaMathExample1 javaMathExample1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 绑定控件 calculateX = findViewById(R.id.calculateX); calculateY = findViewById(R.id.calculateY); output = findViewById(R.id.math_test2); // 提前初始化工具类实例,无需每次点击重复创建 javaMathExample1 = new JavaMathExample1(); // 点击结果框触发计算,也可自行添加Button控件触发,逻辑完全一致 output.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 点击时才读取最新输入值 String xStr = calculateX.getText().toString().trim(); String yStr = calculateY.getText().toString().trim(); // 空输入校验 if (xStr.isEmpty() || yStr.isEmpty()) { Toast.makeText(MainActivity.this, "请先输入x和y的值", Toast.LENGTH_SHORT).show(); return; } try { // 字符串转数字类型 double x = Double.parseDouble(xStr); double y = Double.parseDouble(yStr); // 调用库方法计算 double result = javaMathExample1.getMaxValue(x, y); // 结果回显到输出框 output.setText(String.valueOf(result)); } catch (NumberFormatException e) { // 捕获非法输入异常,给用户提示 Toast.makeText(MainActivity.this, "请输入有效的数字", Toast.LENGTH_SHORT).show(); } } }); } }
可选优化建议
如果觉得点击输出框触发计算不符合使用习惯,可以在布局中新增一个按钮控件,给按钮设置上述点击事件即可。
内容的提问来源于stack exchange,提问作者pansego
相关产品推荐
相关产品推荐

