簡體   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