安卓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" />
相关推荐
短剑重铸之日24 分钟前
《ShardingSphere解读》07 读写分离:如何集成分库分表+数据库主从架构?
java·数据库·后端·架构·shardingsphere·分库分表
知我Deja_Vu25 分钟前
【避坑指南】ConcurrentHashMap 并发计数优化实战
java·开发语言·python
谢白羽1 小时前
vllm实践
android·vllm
daidaidaiyu1 小时前
Spring IOC 源码学习 事务相关的 BeanDefinition 解析过程 (XML)
java·spring
电子云与长程纠缠2 小时前
Godot学习03 - 实例化、层级访问、Export
android·学习·godot
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 基于Android的便民系统的设计与实现为例,包含答辩的问题和答案
android
鬼蛟2 小时前
Spring————事务
android·java·spring
西门吹-禅3 小时前
【sap fiori cds up error】
java·服务器·sap cap cds
敲代码的嘎仔3 小时前
Java后端面试——SSM框架面试题
java·面试·职场和发展·mybatis·ssm·springboot·八股
大傻^4 小时前
Spring AI Alibaba RAG实战:基于向量存储的检索增强生成
java·人工智能·spring