安卓APP页面之间传参(Android studio 开发)

页面之间传参

  • 关键核心功能
  • 主界面(监听参数)
  • [SeedCalibrationActivity 副界面(发送参数)](#SeedCalibrationActivity 副界面(发送参数))
  • [FertCalibrationActivity 副界面(发送参数)](#FertCalibrationActivity 副界面(发送参数))
  • [AndroidManifest.xml (三个界面)](#AndroidManifest.xml (三个界面))

关键核心功能

java 复制代码
private ActivityResultLauncher<Intent> calibrationLauncher;
  1. 结果处理复用
  • 单个 ActivityResultLauncher 处理两种不同类型的校准结果
  • 通过检查返回数据中的特定字段区分种子/肥料结果
  1. 数据驱动更新
  • 依赖返回 Intent 中的 extras 传递校准结果
  • 使用一致的键名约定:seed_name, seed_calibration_value等
  1. 健壮性处理
  • 结果码检查 (RESULT_OK)
  • 空数据检查 (result.getData() != null)
  • 空类型检查 (seedType != null)
  • 默认值回退 (0.7178)
  1. 模块化设计​​
  • 分离结果处理与活动启动逻辑
  • 统一的启动器处理不同活动

代码思路图

主界面(监听参数)

java 复制代码
public class MainActivity extends AppCompatActivity
java 复制代码
// 注册 ActivityResultLauncher
calibrationLauncher = registerForActivityResult(
        new ActivityResultContracts.StartActivityForResult(),
        result -> {
            if (result.getResultCode() == RESULT_OK && result.getData() != null) {
                String seedType = result.getData().getStringExtra("seed_name");
                Double seedcalValue = result.getData().getDoubleExtra("seed_calibration_value", 0.7178);
                String fertType = result.getData().getStringExtra("fert_name");
                Double fertcalValue = result.getData().getDoubleExtra("fert_calibration_value", 0.7178);

                if (seedType != null) {
                    update_seedtype_calvalue(seedType, seedcalValue);
                }

                if (fertType != null) {
                    update_ferttype_calvalue(fertType, fertcalValue);
                }
            }
        }
);

// 启动 SeedCalibrationActivity 的按钮
Button btnSeedCalibrate = findViewById(R.id.btn_seed_calibration);
btnSeedCalibrate.setOnClickListener(v -> {
    Intent intent = new Intent(MainActivity.this, SeedCalibrationActivity.class);
    calibrationLauncher.launch(intent);
});

// 启动 SeedCalibrationActivity 的按钮
Button btnFertCalibrate = findViewById(R.id.btn_fert_calibration);
btnFertCalibrate.setOnClickListener(v -> {
    Intent intent = new Intent(MainActivity.this, FertCalibrationActivity.class);
    calibrationLauncher.launch(intent);
        });

SeedCalibrationActivity 副界面(发送参数)

java 复制代码
public class SeedCalibrationActivity extends AppCompatActivity
java 复制代码
private void saveCalibrationResult() {
    // 创建返回结果
    Intent resultIntent = new Intent();
    resultIntent.putExtra("seed_name", currentSeedName);
    resultIntent.putExtra("seed_calibration_value", currentCalibrationValue);
    setResult(RESULT_OK, resultIntent);

    // 显示保存成功提示
    Toast.makeText(this, currentSeedName + " 校准值已保存", Toast.LENGTH_SHORT).show();
    finish();
}

FertCalibrationActivity 副界面(发送参数)

java 复制代码
public class FertCalibrationActivity extends AppCompatActivity
java 复制代码
private void saveCalibrationResult() {
    // 创建返回结果
    Intent resultIntent = new Intent();
    resultIntent.putExtra("fert_name", currentFertName);
    resultIntent.putExtra("fert_calibration_value", currentCalibrationValue);
    setResult(RESULT_OK, resultIntent);

    // 显示保存成功提示
    Toast.makeText(this, currentFertName + " 校准值已保存", Toast.LENGTH_SHORT).show();
    finish();
}

AndroidManifest.xml (三个界面)

xml 复制代码
<activity
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<!-- 播种校准Activity -->
<activity
    android:name=".SeedCalibrationActivity"
    android:label="播种校准"
    android:parentActivityName=".MainActivity"
    android:theme="@style/AppTheme.NoActionBar" />

<!-- 施肥校准Activity -->
<activity
    android:name=".FertCalibrationActivity"
    android:label="施肥校准"
    android:parentActivityName=".MainActivity"
    android:theme="@style/AppTheme.NoActionBar" />
相关推荐
毕设源码-赖学姐6 分钟前
【开题答辩全过程】以 基于Java的小区物业管理系统APP的设计与实现为例,包含答辩的问题和答案
java·开发语言
会编程的林俊杰18 分钟前
Mapper解析
java·mybatis
狼爷20 分钟前
yyds,JDK 25 终结 import,可以像 Python 一样简单粗暴了
java
毕设源码-邱学长31 分钟前
【开题答辩全过程】以 跑腿服务网站为例,包含答辩的问题和答案
java·eclipse
一 乐1 小时前
高校评教|基于SpringBoot+vue高校学生评教系统 (源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
自在极意功。1 小时前
手写Tomcat:深入理解Servlet容器工作原理
java·servlet·tomcat·socket
Boop_wu1 小时前
[Java EE] 字符流和字节流实例
java·开发语言·apache
是一个Bug1 小时前
Spring事件监听器在电商订单系统中的应用
java·python·spring
Arva .1 小时前
讲一下 Spring 中用到的设计模式
java·spring·设计模式