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

Android:如何访问跨Activity传递且在onCreate中初始化的变量?

Android Activity间传值后变量访问问题解决

一、在Second Activity的其他方法中访问传递过来的值

要让其他方法能访问这两个值,只需把它们从onCreate的局部变量改成Second Activity的成员变量,具体修改如下:

public class SecondActivity extends AppCompatActivity {
    // 定义成员变量,作用域覆盖整个Activity
    private String importedTitle;
    private String importedClickGoal;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 注意:原代码此处有语法错误,需去掉空格,改为正确的布局引用
        setContentView(R.layout.activity_second);
        
        Intent intent = getIntent();
        // 给成员变量赋值
        importedTitle = intent.getStringExtra("title");
        ((TextView)findViewById(R.id.title2)).setText(importedTitle);
        
        importedClickGoal = intent.getStringExtra("clickgoal");
        ((TextView)findViewById(R.id.goal)).setText(importedClickGoal);
    }

    // 任意其他方法中直接使用成员变量
    private void doSomething() {
        // 直接调用importedTitle和importedClickGoal即可
        Log.d("SecondActivity", "当前标题:" + importedTitle);
        Log.d("SecondActivity", "当前目标值:" + importedClickGoal);
    }
}

二、关于无法直接访问First Activity变量的问题

  • 原因:Activity是Android系统托管的组件,每个Activity实例由系统创建和销毁,你不能通过类名直接访问某个Activity实例的变量(比如firstactivity.name)—— 当你跳转到Second Activity时,First Activity可能已经进入后台甚至被销毁,对应的变量也可能不存在。
  • 解决方式:你已经通过Intent把值传递到Second Activity了,只需按上面的方式把值保存为Second Activity的成员变量,就能在当前Activity的任意方法中使用。如果需要在多个组件间长期共享这类数据,可以考虑用SharedPreferences存储,或者使用ViewModel统一管理跨组件的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 11:10:33