startActivity应始终运行已启动的活动onCreate?
我有一个主要活动和一个子活动。 主要活动使用startActivity启动子活动,并在意图中传递一个对象。 子活动在其onCreate操作中读取对象以外的意图。 子活动更新对象,然后使用startActivity返回到主活动,并再次传递更新的对象。 但是,onCreate函数的主要活动未被调用,所以它包含的用于读取传递对象的代码不会运行。startActivity应始终运行已启动的活动onCreate?
进一步调查表明,主要活动onPause事件正在触发,即它只在子活动运行时暂停,所以当子活动再次启动主活动时,它只是onResumes。
有谁知道如果我将数据恢复/存储活动移动到onResume和onPause事件会有什么不利吗? 我没有使用onCreate savedInstanceState,我应该吗?
你还在其他活动之间传递一组数据项而不使用数据库或这些首选项?我应该使用数据库吗?我有大约20个相当个人的数据项。
任何帮助将不胜感激,
- 弗林克
我会检查出startActivityForResult()
方法,而不是仅仅startActivity()
这应该给你传递的东西返回给调用活动的一种手段。
从http://developer.android.com/reference/android/app/Activity.html:
有时你希望得到一个结果,从一个活动回来何时结束。例如,您可以开始一项活动,让用户在联系人列表中选择一个人;当它结束时,它返回被选中的人。为此,可以使用第二个整数参数来调用startActivityForResult(Intent,int)版本来标识调用。结果将通过onActivityResult(int,int,Intent)方法返回。
它更可能调用的onResume()或取决于孩子的活动和多少控制它需要在onStart()。
看看这个页面关于3/4在图表下。
http://developer.android.com/guide/topics/fundamentals.html
父永远不会被破坏,因此就不必重新创建它。它应该暂停。您可以像onCreate()一样覆盖onResume()和onStart()。
编辑:在子活动中有没有给用户的东西?这听起来像你并不需要一个活动,你只需要一个可以调用方法的java类。
我有一个负载的变量(在类中),我传递给子活动,用户更新它们并将其发回,所以我在子活动中有一个用户界面。 如果您包含子活动,图表将如何查看? – FrinkTheBrave 2010-08-11 20:04:23
它会跟着下线。看看绿色活动正在运行节点,它说在活动前面有另一个活动。其他活动是你的子活动。只需重写onResume和onStart,并向他们中的每一个添加敬酒,以说出哪个人被调用,并且您将知道哪个人被调用。 – Mike 2010-08-11 21:39:54
看看活动生命周期here。
此外,请考虑使用StartActivityForResult
开始您的子活动。
从生命周期中不清楚哪些真实世界的事件导致各种onCreate等方法被调用 – FrinkTheBrave 2010-08-12 09:32:38
为什么不从主活动中调用startActivityForResult并将数据返回到onActivityResult?这是做这件事的正常方法。
谢谢,我会试试看。但是,子活动是如何将主动活动中的onActivityResult读入的? – FrinkTheBrave 2010-08-11 19:54:10
另外,如何传回onActivityResult中使用的resultCode? – FrinkTheBrave 2010-08-11 20:08:47
看看这里的例子:http://developer.android.com/guide/appendix/faq/commontasks.html#opennewscreen – 2010-08-11 20:10:15