安卓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" />
相关推荐
论迹20 小时前
【JavaEE】-- IoC & DI
java·java-ee
lzj201420 小时前
Spring AI使用知识库增强对话功能
java
大头an20 小时前
Spring 6 & Spring Boot 3新特性:事务管理的革新
java
Ro Jace20 小时前
三国华容道(横刀立马)移动策略
android·java·数据库·人工智能·深度学习·神经网络·游戏
小马爱打代码21 小时前
Java学习笔记:注解详解
java·笔记·学习
Digitally21 小时前
如何将短信从安卓手机传输到电脑
android
我来变强了21 小时前
token无感刷新全流程
java·vue.js
木易 士心21 小时前
Android Studio + Gemini 移动开发领域的一次范式转移
android·ide·android studio
QT 小鲜肉21 小时前
【C++基础与提高】第十一章:面向对象编程进阶——继承与多态
java·linux·开发语言·c++·笔记·qt