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

Android Kotlin 如何向SDK库内的Activity传递参数?

Android SDK内Activity参数传递正确实现方案

错误原因

你手动实例化ShowEmailActivity的方式无效:Android的Activity生命周期由系统统一托管,你自己创建的Activity实例和系统实际启动运行的实例是完全独立的两个对象,所以手动设置的参数不会生效。

正确实现步骤

第一步:修改SDK内ShowEmailActivity逻辑

通过Intent的Extra存储传递参数,在Activity生命周期回调中读取参数赋值,推荐对外提供统一的Intent构造方法,避免调用方手动拼写Key出错:

class ShowEmailActivity : AppCompatActivity() {
    companion object {
        // 内部定义Extra存储Key,避免外部拼写错误
        private const val EXTRA_EMAIL = "extra_email"

        // 对外公开构造启动Intent的方法,调用方无需感知内部Key
        fun newIntent(context: Context, email: String): Intent {
            return Intent(context, ShowEmailActivity::class.java).apply {
                putExtra(EXTRA_EMAIL, email)
            }
        }
    }

    private var email: String = ""
    private lateinit var emailTextView: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_show_email)
        // 初始化布局TextView
        emailTextView = findViewById(R.id.your_email_textview_id)
        
        // 读取Intent传递的参数
        email = intent.getStringExtra(EXTRA_EMAIL) ?: ""
        // 可保留原有setEmail逻辑,兼容已有代码
        setEmail(email)
        
        // 赋值到布局展示
        emailTextView.text = email
    }

    // 原有方法可保留
    fun setEmail(email:String){
        this.email = email
    }
}

第二步:主应用侧调用方式

直接调用SDK提供的newIntent方法构造跳转意图,启动Activity即可:

// MainActivity中跳转逻辑
val targetIntent = ShowEmailActivity.newIntent(this@MainActivity, myEmail)
startActivity(targetIntent)

注意事项

如果SDK开启了代码混淆,需要在混淆规则中保留ShowEmailActivity的类名,避免系统反射创建Activity失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:21:03