我有ArrayList
Car
:
ArrayList<Car> cars = new ArrayList<Car>();
我使用AsyncTask填充了我onCreate
的{{1}}方法:
MainActivity.java
我希望它能在名为new fillCars().execute();
的其他类中使用此ArrayList cars
。我的问题是ModifyCars.java
在方法AsyncTask
上执行后,在所有类onCreate
中,ArrayList MainActivity.java
它&#39;填充,我可以使用其中的数据,但当我将其传递给cars
时,它的大小等于ModifyCars.java
。
我用来传递此0
的方法来创建类ArrayList
的空构造函数并创建一个get方法。在类MainActivity.java
中,我创建了一个ModifyCars.java
的对象,并尝试使用我之前创建的get方法。这里是我用于此目的的代码:
MainActivity
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
课程中使用我的cars
ArrayList(当然,已填充)?我做错了什么?
我在互联网上搜索但没有任何对我有用的东西。任何帮助都会非常感激。
提前致谢!
答案 0 :(得分:2)
您正在创建MainActivity的新实例,这是您获得空数组列表的原因。 一个简单的解决方案是让您的arryalist静态并访问它,如下所示,
在MainActivity中:
static ArrayList<Car> cars = new ArrayList<Car>();
&#13;
ArrayList<Car> myCars = MainActivity.cars
&#13;
但是,执行此操作的标准方法是,将数组列表发送到ModifyCars活动,同时通过intent调用它,如下所示,
Intent i = new Intent(this, ModifyCars.class);
i.putExtra("CAR_ARRAY_LIST", this.cars);
startActivity(i);
&#13;
并且在ModifyCars活动中,您应该将其从intent中提取为
Intent i = getIntent();
ArrayList<Car> myCars = (ArrayList<Car>) i.getSerializableExtra("CAR_ARRAY_LIST");
&#13;