安卓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" />
相关推荐
Pniubi1 小时前
HashMap的扩容和树化边界
java·开发语言
Mikko71 小时前
用 Java 复刻了高中时在塞班上玩的「熔岩矿车」:纯 Swing、零依赖、没有一张图片,一个 jar 双击就能玩
java·游戏开发·swing
知了学历孙老师1 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
Java爱好狂.2 小时前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
秋饼2 小时前
LLM API密钥动态轮换实战:Spring Vault + Spring AI + 多Provider路由
java·ai·技术分享·后端开发
撩得Android一次心动3 小时前
Jetpack Compose 知识点整理2【个人用】
android·笔记·学习·kotlin·compose
福兮说4 小时前
JSON 格式正确,数据就可靠吗?我用一份自编配置检查类型与空值
java·前端·json
是真的小外套4 小时前
2024年软考中级信息安全工程师|选择题考点+案例分析真题解析(含答案)
android·网络
紧跟先前的步伐5 小时前
Go AI Agent 实战 03|Token、上下文窗口与模型调用成本
java·人工智能·golang
const_qiu6 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python