2016-01-06 2 views
0

У меня есть следующая логика для передачи данных между Activity.Данные о деятельности Передача 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);

Из документов:

ли не активность может перейти от задачи который запустил его к задаче, с которой он связан, когда следующая задача будет перенесена на фронт - «true», если она может двигаться, и «false», если она должна оставаться с заданием, в котором она была запущена.
Если этот атрибут не установлен, то к действию относится значение, заданное соответствующим атрибутом allowTaskReparenting элемента <application>10. Значение по умолчанию неверно".

Обычно, когда действие запускается, оно связано с задачей запускающего его действия и остается там на протяжении всего его жизненного цикла. Вы можете использовать этот атрибут, чтобы принудительно перенаправлять его к задаче, с которой она имеет сродство, когда текущая задача больше не отображается. Как правило, он используется для того, чтобы действия приложения могли перейти к основной задаче, связанной с этим приложением.

Например, если сообщение электронной почты содержит ссылку на веб-страницу, нажатие ссылки вызывает активность, которая может отображать страницу. Это действие определяется приложением браузера, но запускается как часть задачи электронной почты. Если он повторен в задаче браузера, он будет показан, когда браузер перейдет на передний план и будет отсутствовать, когда снова будет отправлено задание электронной почты.

Сродство к действию определяется атрибутом taskAffinity. Сродство задачи определяется путем чтения сродства его корневой активности. Поэтому, по определению, корневая активность всегда находится в задаче с одинаковой близостью. Поскольку действия с режимами запуска «singleTask» или «singleInstance» могут быть только в корне задачи, воссоединение ограничено «стандартными» и «одноточечными» режимами. (См. Также атрибут launchMode.)

SingleTop передаст данные просто отлично.

Смежные вопросы