Как ссылаться на объекты из родительской активности - PullRequest
0 голосов
/ 04 октября 2019

Я не уверен, правильно ли то, что я спрашиваю, поэтому, пожалуйста, прости мое невежество.

Мне нужно использовать объект, инициализированный в основном действии, в другом. Я сериализовал объектный класс с помощью implements Serializable и отправил его в новое действие, добавив в него дополнительное, а затем удалил его с помощью intent.getSerializableExtra.

Другим способом был бы прямой доступ к ранее публично объявленному объекту из действияиспользуя следующее:

MainActivity mainActivity = (MainActivity) this.getParent();
Object object = mainActivity.object;

Является ли что-нибудь из этого правильным? Если да, то какой? Если оба, что лучше?

1 Ответ

0 голосов
/ 04 октября 2019

Я не уверен, что у вас правильный дизайн в первую очередь. Попытка разыграть MainActivity не является хорошей практикой. Это шаг к тому, чтобы сделать его классом Бога.

Я не уверен, какой смысл отправлять Сериализуемый объект. В целом, более вероятно, использовать некоторые начальные значения или строки. Если есть что-то тяжелое, зачем это проходить? И что меня беспокоит, так это то, что вы говорите, что хотите использовать что-то «инициализированное» в MainActivity, что заставляет меня думать, что вы не пытаетесь передавать данные, а получаете доступ к состоянию MainActivity из другого Activity, что является плохой практикой.

Представления должны представлять данные и уведомлять о таких событиях, как щелчки некоторого «другого кода». Ничего больше. Вы можете иметь какой-то одноэлементный класс и изменять его состояние в зависимости от действий в первом упражнении. Затем из второго действия, скажем, у вас есть MVVM, вы создаете ViewModel и наблюдаете его, ViewModel в его init {} может вызывать общий синглтон и может передавать данные обратно во второе действие через LiveData, или лучше просто сказатьэто что "показать" пользователю.

Надеюсь, это поможет.

...