如何在Android Studio的Activity中调用Eclipse编写的外部Java类方法
集成操作步骤
- 打开Android Studio项目的
app/src/main/java目录,找到WaterDetails.java所在的包文件夹(例如路径为com/yourproject/scuba) - 将
DurationCalculations.java文件直接拖入该文件夹,弹出操作提示时选择重构移动(Refactor Move),IDE会自动将文件顶部的package ScubanauiTables;修改为和WaterDetails一致的包声明,完成后就不会出现类找不到的问题。
如果不想修改原文件的包声明,也可以在app/src/main/java下新建名为ScubanauiTables的文件夹,把目标文件放入,之后在WaterDetails.java顶部添加导入语句import ScubanauiTables.DurationCalculations;即可
代码修正与调用示例
你当前的代码存在两处逻辑错误:一是直接拿EditText控件和空字符串对比,判断输入是否为空的逻辑永远不会生效;二是DurationCalculations的构造函数需要传入多个参数,需要补全参数后再实例化调用。
修正后的点击事件代码参考:
duration.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String userInput = duration.getText().toString().trim(); // 判断输入不为空 if (!userInput.isEmpty()) { // 转换输入的时长为int类型 int inputDuration = Integer.parseInt(userInput); // 补全构造函数需要的所有参数,以下示例值请替换为实际业务取值 int maxDepth = 30; int avgDepth = 22; int temp = 26; int visibility = 18; int pressureStart = 200; int pressureEnd = 55; String[] diveConditions = {"开阔水域", "低流"}; String[] diveActivities = {"休闲潜水", "拍摄"}; // 实例化目标类 DurationCalculations calculationUtil = new DurationCalculations( inputDuration, maxDepth, avgDepth, temp, visibility, pressureStart, pressureEnd, diveConditions, diveActivities ); // 调用方法获取计算结果,后续可根据业务需求使用该结果 int resultDuration = calculationUtil.getDuration(); Toast.makeText(WaterDetails.this, "计算结果:" + resultDuration, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(WaterDetails.this, "请输入有效时长", Toast.LENGTH_SHORT).show(); } } });
注意事项
- 你提供的
DurationCalculations代码不完整,缺少多数set方法的实现、相关成员变量定义,编译前需要补全这些缺失内容避免报错。 - 如果需要将计算结果传递到其他页面,直接把结果存入Intent的Extra参数即可。
内容的提问来源于stack exchange,提问作者pansego
相关产品推荐
相关产品推荐

