Передавать данные из одной активности в другую в Xamarin.Android

Я хотел передать объект Class Object из одной активности в другую в приложении Xamarin.Android . Я могу передать простые строки с Intent.PutExtra метода Intent.PutExtra .

Кто-нибудь знает об этом. Anyhelp оценили 🙂

Концепция такая же, как со стандартным (не-хамаринским) приложением.

Вы можете использовать Intent#putExtra(String, Parcelable) для передачи любого объекта, который реализует интерфейс Parcelable в качестве дополнительного.

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

Вы не можете передать ссылку на объект через Intent . Это связано с тем, что действия предназначены для работы полностью независимо друг от друга. Пользователи могут бросать вашу деятельность в фоновом режиме во время выполнения других задач, поэтому вполне возможно (и очень вероятно), что переменные вашей активности будут собирать мусор. Когда пользователь позже вернется к вашей деятельности, он должен иметь возможность воссоздать свое состояние.

Если вам действительно нужно передать ссылку на объект напрямую, вы можете сделать это, сделав этот объект статической переменной. Хотя это быстрый и грязный способ решения проблемы получения данных от одного Activity к другому, он не решает проблему переменной, потенциально представляющей собой мусор, собранный в какой-то момент, и, как правило, является плохим выбором дизайна.

Просто добавьте, если кто-то еще столкнется с этим. Хорошая вещь о Xamarin / .NET заключается в том, как легко использовать JSON. Вы можете Сериализовать свои данные на строку и передать это через Extras.

JSON.NET – это хорошая библиотека (которую вы можете найти в хранилище компонентов Xamarin) для этого, а также некоторые встроенные классы JSON в .NET. Пример с использованием JSON.NET будет таким.

 Intent i = new Intent(Application.Context, typeof(SecondActivity)); i.PutExtra("key", JsonConvert.SerializeObject(myObject)); StartActivity(i); 

И в другой Activity вы можете десериализировать ее.

 var obj = JsonConvert.DeserializeObject<OBJ_TYPE>(Intent.GetStringExtra("key")); 

Это лучше, чем использование статической ссылки, на мой взгляд.