繁体   English   中英

如何从另一个类访问 ArrayList?

[英]How can I access to an ArrayList from another class?

我有一个CarArrayList

ArrayList<Car> cars = new ArrayList<Car>();

我用 AsyncTask 填充MainActivity.java onCreate方法:

new fillCars().execute();

我想要的是在名为ModifyCars.java其他类中使用这个 ArrayList cars 我的问题是,在AsyncTask之后,它在onCreate方法上执行,在所有类MainActivity.java ,ArrayList cars已填充,我可以使用其中的数据,但是当我将其传递给ModifyCars.java ,它的大小等于0 .

我用来传递这个ArrayList的方法是创建类MainActivity.java的空构造函数并创建一个 get 方法。 在类ModifyCars.java我创建了一个MainActivity对象并尝试使用我之前创建的 get 方法。 这是我用于此目的的代码:

MainActivity.java

public MainActivity(){

}

//Here the method onCreate 

public ArrayList<Car> getCars(){
    return cars;
}

ModifyCars.java

MainActivity MA = new MainActivity();
Log.d("prove",Integer.toString(MA.getCars().size())); //Here the size it's 0

如何在我的ModifyCars.java类中使用我的cars ArrayList(当然,已填充)? 我究竟做错了什么?

我在互联网上搜索,但对我没有任何用处。 任何帮助将不胜感激。

提前致谢!

您正在创建 MainActivity 的一个新实例,这就是您在那里获得空数组列表的原因。 一个简单的解决方案是使您的 arryalist 静态并按如下方式访问它,

在主活动中:

 static ArrayList<Car> cars = new ArrayList<Car>();
并在您的 ModifyCars.java 中访问它,

 ArrayList<Car> myCars = MainActivity.cars

但是一个标准的方法是,将数组列表发送到 ModifyCars 活动,同时通过如下意图调用它,

 Intent i = new Intent(this, ModifyCars.class); i.putExtra("CAR_ARRAY_LIST", this.cars); startActivity(i);

在 ModifyCars 活动中,您应该将其从意图中提取为,

 Intent i = getIntent(); ArrayList<Car> myCars = (ArrayList<Car>) i.getSerializableExtra("CAR_ARRAY_LIST");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM