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

如何使用带Bundle可选参数的startActivity方法并在目标Activity获取参数

startActivity(Intent intent, Bundle options) 用法说明

基础定位

这个方法的第二个参数options的设计初衷是承载Activity启动时的系统级配置,比如自定义启动动画、共享元素过渡效果、任务栈启动规则等,并不是专门用来传递业务层自定义数据的,你也可以根据需要往里面塞入自定义参数传递到目标Activity。

启动端传参示例

// 构造要启动的目标Activity的Intent
Intent intent = new Intent(this, TargetActivity.class);
// 构造Activity启动配置,这里以自定义启动动画为例
ActivityOptions activityOptions = ActivityOptions.makeCustomAnimation(
        this,
        R.anim.slide_in_right, // 进入动画
        R.anim.slide_out_left // 退出动画
);
// 拿到配置对应的Bundle
Bundle optionsBundle = activityOptions.toBundle();
// 往options里塞入自定义业务参数
optionsBundle.putString("custom_key", "我是通过options传递的参数");
optionsBundle.putInt("custom_num", 100);
// 调用带options参数的启动方法
startActivity(intent, optionsBundle);

目标Activity取数方式

不需要从Intent的extras中取,直接在目标Activity的onCreate生命周期中调用系统方法获取即可:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_target);
    
    // 获取启动时传入的options Bundle
    Bundle options = getActivityOptions();
    if (options != null) {
        // 读取自定义参数
        String customStr = options.getString("custom_key");
        int customNum = options.getInt("custom_num");
        // 后续业务逻辑处理
    }
}

注意事项

  1. getActivityOptions()方法是Android 12(API level 31)才新增的系统API,如果你的应用需要兼容更低版本,建议还是把业务参数放到Intent的extras中传递,options仅用来处理启动配置即可。
  2. 如果你只是用options配置系统自带的启动效果(比如动画、共享元素),不需要读取自定义参数,那么目标Activity不需要做任何额外处理,系统会自动应用你配置的启动规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:45:02