You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将App模块Fragment的EditText数据传递至另一模块的Kotlin类

跨模块传递EditText内容到相机类的实现方案

下面是几种简单直接的实现方式,适配不同场景需求:


方案1:构造函数直接传参

这是最直观的方式,适用于相机类实例化时就能确定输入内容的场景。

相机模块的CameraHelper类

// 位于相机模块的Kotlin类
class CameraHelper(
    private val input1: String,
    private val input2: String,
    private val input3: String
) {
    fun takePhoto() {
        // 在这里使用传入的输入内容执行拍照逻辑
        println("拍照携带参数:$input1 | $input2 | $input3")
    }
}

App模块的Fragment代码

class MyFragment : Fragment() {
    private lateinit var etInput1: EditText
    private lateinit var etInput2: EditText
    private lateinit var etInput3: EditText

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.fragment_my, container, false)
        etInput1 = view.findViewById(R.id.et_input1)
        etInput2 = view.findViewById(R.id.et_input2)
        etInput3 = view.findViewById(R.id.et_input3)
        return view
    }

    // 点击拍照按钮时触发
    private fun launchCamera() {
        // 获取EditText输入内容
        val content1 = etInput1.text.toString().trim()
        val content2 = etInput2.text.toString().trim()
        val content3 = etInput3.text.toString().trim()
        
        // 实例化跨模块相机类并传参
        val cameraHelper = CameraHelper(content1, content2, content3)
        cameraHelper.takePhoto()
    }
}

模块依赖配置

在App模块的build.gradle中添加对相机模块的依赖:

dependencies {
    implementation project(":camera") // 替换为你的相机模块名称
}

方案2:Setter方法动态传参

如果相机类已经提前实例化,或者需要后续更新输入内容,用Setter方法更灵活。

相机模块的CameraHelper类

class CameraHelper {
    private var input1: String = ""
    private var input2: String = ""
    private var input3: String = ""

    fun setInputParams(input1: String, input2: String, input3: String) {
        this.input1 = input1
        this.input2 = input2
        this.input3 = input3
    }

    fun takePhoto() {
        println("拍照携带参数:$input1 | $input2 | $input3")
    }
}

App模块的Fragment代码

class MyFragment : Fragment() {
    // 提前初始化相机类实例
    private val cameraHelper = CameraHelper()
    // ... 省略EditText初始化代码

    private fun launchCamera() {
        val content1 = etInput1.text.toString().trim()
        val content2 = etInput2.text.toString().trim()
        val content3 = etInput3.text.toString().trim()
        
        // 动态设置参数
        cameraHelper.setInputParams(content1, content2, content3)
        cameraHelper.takePhoto()
    }
}

方案3:数据类封装参数(优雅适配多参数场景)

如果后续可能增加更多参数,用数据类封装可以避免方法参数过于冗长。

相机模块定义数据类和CameraHelper

// 封装输入参数的数据类
data class CameraInputParams(
    val input1: String,
    val input2: String,
    val input3: String
)

class CameraHelper(private val params: CameraInputParams) {
    fun takePhoto() {
        println("拍照携带参数:${params.input1} | ${params.input2} | ${params.input3}")
    }
}

App模块的Fragment代码

private fun launchCamera() {
    val params = CameraInputParams(
        etInput1.text.toString().trim(),
        etInput2.text.toString().trim(),
        etInput3.text.toString().trim()
    )
    val cameraHelper = CameraHelper(params)
    cameraHelper.takePhoto()
}

注意事项

  • 确保模块依赖关系正确:App模块必须依赖相机模块,避免出现类找不到的问题。
  • 输入内容校验:传递前建议对EditText内容做非空、格式校验,避免无效数据影响相机逻辑。
  • 避免循环依赖:如果相机模块需要回调App模块的UI更新,建议定义接口让Fragment实现,不要让相机模块直接依赖App模块。

内容的提问来源于stack exchange,提问作者Abhas Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 23:48:29