2017-03-09 19 views
0

我想將一個類引用傳遞給intent以便讓我的類的實例在Activity中加載。 請考慮我寫了「參考」類,所以它不應該是另一個實例。遵循所有說明,我發現我能夠通過一個班,但最後是另一個例子。Android:如何將類引用傳遞給intent

intent.putExtra("idletime", idle); 

空閒是我的班級我想通過作爲參考。 和在那裏我得到它:

idle_ = getIntent().getParcelableExtra("idletime"); 

但似乎引用是爲我的類的新實例,而不是同一個類實例我試圖超越。

這是類的定義,但我認爲不是那麼重要:

public class idletime extends AsyncTask<Object, Integer, Boolean> implements Parcelable {} 

有事嗎?

+0

你不能通過意圖傳遞引用,它將是它的副本 –

回答

3

但似乎引用是爲我的類的新實例,而不是我嘗試通過的類實例。

這是一個正確的行爲,putExtra將你的類轉換成二進制形式(連載),然後getParcelableExtra將從二進制形式反序列化類,並通過這種方式創建一個新的實例。

+0

我很高興知道這是預期..但我的需要是通過參考原始類..我可以做到這一點嗎?我通常在C++中工作,java有時候對我有些黑暗。 –

+0

@AndreaGuglielmi Java不允許直接訪問指針,即使它發生了,如果在序列化和反序列化之間垃圾收集對象,會發生什麼?如果你想要這麼多的原始實例,你應該創建一個'Map'並且序列化一個對象而不是對象本身。 – user1643723

+0

@AndreaGuglielmi你將不得不以某種類的靜態字段的形式存儲此引用,最好是派生的應用程序 - 然後以與在C++中相同的方式訪問此字段,您將訪問類的靜態變量。你需要小心,因爲Android可以在任何時候殺掉你的進程,然後所有的靜態字段都會丟失。例如,看看這裏:http://stackoverflow.com/questions/18002227/why-extend-an-application-class – marcinj

相關問題