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
相关产品推荐
相关产品推荐

