传递对另一项活动的引用 - Android

时间:2010-06-20 12:53:26

标签: java android database

我对android很新,所以我正在尝试教程代码。特别是记事本。

如果你看这里:http://developer.android.com/resources/tutorials/notepad/notepad-ex2.html,在第5步,它们会放置值,以便NoteEdit可以使用它。

我想将NotesDbAdapter的引用传递给NoteEdit,以便我可以实际完成一些完全不同的事情。

它似乎没有调用构造函数。我曾尝试在NoteEdit onCreate中添加一个paramiter,但它似乎不喜欢这个? : - (

我最期待听到你的答案,专家! :-D

2 个答案:

答案 0 :(得分:3)

Put / Get extras不会通过构造函数传递,你必须明确地读取intent,可能是在onCreate方法中

第一项活动

Intent myIntent = new Intent();
myIntent.putExtra("key", "value");
startActivity(myIntent); 

新活动

onCreate中的

代码

Intent myIntent = getIntent(); 
myIntent.getExtra("key");

如果要传递自定义类,您的类必须实现可序列化,然后阅读:

Bundle e = getIntent().getExtras();
Object obj=(Object) e.getSerializable("key");

答案 1 :(得分:2)

我同意Castiblanco先生的意见。不要试图这样做。

您的Adapter包含对主Activity的引用,ListViewAdapter附加Adapter的引用。如果您要将Activity转到新的Activity,那么您的新Activity将保留对旧Activity的引用。这将阻止Android销毁旧的Activity以释放其他应用程序的内存,因为您的新Service将保留对它的引用,从而防止垃圾回收。

如果您需要在活动之间共享数据模型,请将该数据模型保留在这些活动之外(例如,数据库,ApplicationAdapter)。您的{{1}}不是您的数据模型。