Передача своего объекта из SecondActivity в MainActivity

Рейтинг: 1Ответов: 1Опубликовано: 12.04.2015

Проблема : Есть MainActivity в ней объект класса myData:

class myData{
int a;
float b;
myData() { .... }

Через MainActivity мы переходим в SecondActivity в котором свой объект myData.

Через текстовые поля на экране мы вводим 2 переменные. s_a , s_b;

Нажимаем кнопку OK и объект myData заносится в массив.

Мы можем заполнять этот массив сколько нам хочется.

По нажатию на кнопку back (которая на телефоне) мы возвращаемся в MainActivity.

Вопрос: Как передать объект класса MyData который мы заполнили во второй активности в объект класса myDate в MainActivity, именно там с этими данными будут манипуляции.

Задача просто манипулировать данными, которые находятся в одной активности через другую. Intent я пробовал использовать. Но при использовании интента нужно вызывать startActivity а смысл в том что бы данные обновились в MainActivity в методе onResume. Так же желательно эти данные передать из SecondActivity при вызове функции onStop().

И еще. После закрытия SecondActivity тот массив myDate нужно сохранить. Какие есть несложные способы? Спасибо.

Ответы

▲ 3Принят

Как то сумбурно написано .
Но если я правильно понял вопрос, то при вызове SecondActivity из MainActivity вам нужно делать это методом startActivityForResult() который не только вызовет другую активити , но и обяжет ее вернуть данные в первую .
То , что вторая активити должна вернуть первой пакуется в интент методом setResult(RESULT_OK, intent) во второй активити , затем делаешь этой активити finish()..
В первой активити переопределяешь метод onActivityResult() , это обратный вызов , который передаст в первую активити то , что вы послали из второй интентом. Здесь не требуются никаких манипуляций ни с onResume() ни с onStop() , метод обратного вызова сработает в первой , как только вторая активити закроется - в нем и делайте все , что нужно .

смотри пример

Сохранять свой объект вы можете куда угодно для долгосрочного хранения, в БД , файл или даже SharedPreferences попробовать использовать , хотя они и не для этого . В любом случае придется писать методы преобразования из объекта в хранимые данные и назад . Еще есть вариант использовать ORM , они работают напрямую с объектом и его долгосрочным хранением . Мне например Realm нравиться в последнее время .

PS: если передавать параметры нужно именно через аппаратную кнопку BACK , что весьма диковато , так как обычно значит - Закрыть без изменений , то вам еще надо переопределить метод onBackPressed() во второй активити и из него слать setResult()
НО! это крайне неправильный и интуитивно непонятный для пользователя подход , лучше сделать отдельную кнопку на экране по которой будет осуществляться ввод.