java如何使用意图在活动之间传递和操作对象
这是我关于Android Lifecycle的第一个问题,我感到有些无助:
在ActivityA中有onCreate。在这里,我创建了一个名为playerNames的ArrayList和一个名为moves的ArrayList。此外,oncreate中还发生了一些事情。在A的onStart中,我创建了一个标志,以便知道哪个活动正在运行,以防我想一次全部关闭。在onDestroy中,标志被设置回null
最后,我打算开始活动B,在那里我将移动列表带到一起。很好
现在我想让B回到A。当我尝试这样做时,生命周期会发生什么?显然,一旦调用了A的创建,就会导致一个NullPointerException,对playerNames列表进行重新排序
我想在B运行时存储这个ArrayList,当我回到A时将其取回。哪个方法是正确的(onResume?onRestart?)我该如何储存它?我真的需要共享参考资料吗
提前感谢你的帮助
# 1 楼答案
关于活动A:
-创建意图,指定要开始的活动
-将活动B收到的该意图的数据输入
-开始活动以获得结果
-在
onActivityResult()
上,验证您是否有要接收的数据,并对其执行所需操作关于活动B:
-在
onCreate()
上接收活动A的数据-根据需要修改数据
-创造新的意图
-将数据放入意图中
-设置活动结果和意图数据
-完成活动B
下面是我描述的步骤示例,它的作用是让活动a启动活动B,并向其传递一个空的ArrayList。然后在活动B上,填充arrayList并将其发送回活动A,在活动A中,arrayList的内容显示在屏幕上
代码:
活动A:
活动B:
注意:您不能忘记在清单文件中声明活动B。还要注意活动如何通过类中创建的常量知道要发送和收集哪些数据,这些数据必须是一致的,因此避免使用文字字符串,并使用定义的常量
# 2 楼答案
从活动B中,您可以使用以下方法返回到前一个A实例:
这将清除所有当前堆栈并返回到A实例(http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP)。只要你的活动没有被破坏,你就拥有了所有的数据
无论如何,您应该考虑使用Activity的保存实例状态能力(http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState%28android.os.Bundle%29)。