2016-01-06 53 views
0

我目前有以下逻辑来在活动之间传递数据。活动数据传递Android Xamarin

Intent resumeMainActivity = new Intent (this, typeof(RecordNowController)); 
resumeMainActivity.PutExtra ("EditedData", editContent); 
StartActivity(resumeMainActivity); 

数据通过罚款,但它重新创建活动。

Intent resumeMainActivity = new Intent (this, typeof(RecordNowController)); 
resumeMainActivity.PutExtra ("EditedData", editContent); 
-->resumeMainActivity.AddFlags(ActivityFlags.ReorderToFront); 
resumeMainActivity.PutExtra ("EditedData", editContent); 
StartActivity(resumeMainActivity); 

添加该行将恢复我当前的活动,而不是创建一个新的活动。但由于某些原因,数据无法通过。

有人知道这是为什么吗?

谢谢。

+0

这第二把多余的右边是一个错字的错误,它不存在源。 – conor

回答

0

这是默认的行为,如果你不希望创建一个新的,然后使用

resumeMainActivity.AddFlags(ActivityFlags.SingleTop);

从文档:

无论是否活动可以从任务移动开始它到它接近任务的任务 - 如果它可以移动,则为“真”;如果它必须与开始的任务保持一致,则为“假”。
如果未设置此属性,则由<application>元素的相应allowTaskReparenting属性设置的值将应用于该活动。默认值是“false”。

正常情况下,当一个活动开始时,它与启动它的活动的任务相关联,并且它在整个生命周期中都处于此状态。您可以使用此属性强制它重新执行与其当前任务不再显示时具有相似性的任务。通常,它用于使应用程序的活动转移到与该应用程序关联的主要任务。

例如,如果电子邮件包含指向网页的链接,则单击该链接将显示可显示页面的活动。该活动由浏览器应用程序定义,但作为电子邮件任务的一部分启动。如果重新设置为浏览器任务,则当浏览器出现在前面时会显示该信息,并且在电子邮件任务再次出现时将不会显示。

活动的关联性由taskAffinity属性定义。通过读取其根活动的亲和力来确定任务的亲和力。因此,根据定义,根活动总是在具有相同亲和力的任务中。由于具有“singleTask”或“singleInstance”启动模式的活动只能是任务的根源,因此重新生育仅限于“标准”和“单独”模式。 (另请参阅launchMode属性。)

SingleTop将传递数据就好了。