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

Android Studio中多Activity传值与跳转实现方法咨询

没问题,这是个很基础的Android组件交互需求,我给你一步步拆解实现方法:

实现步骤

1. 先在AndroidManifest.xml中注册所有Activity

Android系统要求所有要启动的Activity必须在清单文件中注册,不然会抛出ActivityNotFoundException。示例代码如下:

<application
    ...>
    <activity android:name=".Activity1" />
    <activity android:name=".Activity2" />
    <activity android:name=".Activity3" />
</application>

2. 给Activity1添加布局和逻辑

首先在Activity1的布局文件(比如activity_1.xml)中添加两个按钮,分别对应“跳转并传数据到Activity2”和“启动Activity3”:

<LinearLayout
    ...
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_send_to_activity2"
        android:text="跳转并传数据到Activity2" />

    <Button
        android:id="@+id/btn_start_activity3"
        android:text="启动Activity3" />

</LinearLayout>

接下来分两种主流语言实现逻辑:

用Java实现Activity1的逻辑

public class Activity1 extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_1);

        // 处理跳转并传数据到Activity2的按钮
        Button btnSendToActivity2 = findViewById(R.id.btn_send_to_activity2);
        btnSendToActivity2.setOnClickListener(v -> {
            // 创建Intent,指定跳转目标
            Intent intent = new Intent(Activity1.this, Activity2.class);
            // 以键值对形式传递数据,支持基本数据类型、字符串等
            intent.putExtra("USER_NAME", "Prahasan");
            intent.putExtra("USER_AGE", 25);
            // 启动Activity2
            startActivity(intent);
        });

        // 处理启动Activity3的按钮
        Button btnStartActivity3 = findViewById(R.id.btn_start_activity3);
        btnStartActivity3.setOnClickListener(v -> {
            Intent intent = new Intent(Activity1.this, Activity3.class);
            startActivity(intent);
        });
    }
}

用Kotlin实现Activity1的逻辑

class Activity1 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_1)

        btn_send_to_activity2.setOnClickListener {
            val intent = Intent(this, Activity2::class.java)
            // 传递数据
            intent.putExtra("USER_NAME", "Prahasan")
            intent.putExtra("USER_AGE", 25)
            startActivity(intent)
        }

        btn_start_activity3.setOnClickListener {
            val intent = Intent(this, Activity3::class.java)
            startActivity(intent)
        }
    }
}

3. 在Activity2中接收传递的数据

Activity2需要在onCreate方法中获取Intent携带的额外数据,示例如下:

Java版本的Activity2

public class Activity2 extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);

        // 获取Intent对象
        Intent intent = getIntent();
        // 根据键名获取数据,注意处理null或未传值的情况
        String userName = intent.getStringExtra("USER_NAME");
        int userAge = intent.getIntExtra("USER_AGE", 0); // 第二个参数是默认值,未取到数据时用它

        // 可以把数据显示到TextView或者做其他业务处理
        TextView tvInfo = findViewById(R.id.tv_info);
        tvInfo.setText("姓名:" + userName + "\n年龄:" + userAge);
    }
}

Kotlin版本的Activity2

class Activity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_2)

        val userName = intent.getStringExtra("USER_NAME")
        val userAge = intent.getIntExtra("USER_AGE", 0)

        tv_info.text = "姓名:$userName\n年龄:$userAge"
    }
}

额外提示

  • 如果需要传递自定义对象,需要让对象实现Serializable或者Parcelable接口(推荐用Parcelable,性能更优)。
  • 如果后续需要从Activity2返回数据给Activity1,可以用registerForActivityResult(新API)替代旧的startActivityForResult,不过你的需求里没提到这个,就不多展开了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:23:38