@jonasas

Паттерн для доступа к активному экземпляру класса?

Подскажите, пожалуйста, какой-нибудь шаблон проектирования для доступа к активному экземпляру класса. Например, в Android нужно из сервиса получить доступ к какой-нибудь Activity или фрагменту.
Единственное, что приходит на ум -- статическое поле класса, в которое записывается ссылка на объект при его создании/активности. Но мне кажется, это неправильный вариант.
  • Вопрос задан
  • 264 просмотра
Пригласить эксперта
Ответы на вопрос 3
@TheRishka
Андроидоводоведовод
Советую почитать про Dependency Injection. Есть хорошие инструменты для работы с этим:
Dagger - статья на хабре про него
RoboGuice - статья на хабре про него

Возможно, это именно то, что вы ищите. Если вам нужен контекст фрагмента - его можно получить из контекста активити. Активити можно получить, используя DependencyInjection. В зависимости от инструмента, это делается по-разному.
FragmentManager fm = myActivity.getFragmentManager();
Fragment f = fm.findFragmentByTag("MyFragment");
TextView textView = (TextView) f.getView().findViewById(R.id.myTextView);
textView.setText("bla-bla");


Update:
А вообще, опишите подробнее: для каких целей вы хотите это делать? Сразу скажу, что это очень плохая идея - хранить где-то ссылки на Activity.
Ответ написан
@IceJOKER
Web/Android developer
Как вы и написали - добавляем статическое поле, т.е. паттерн Одиночка(Singleton)
в onCreate присваиваем instance = this;
и добавляем метод getInstance(); который возвращает это поле
Ответ написан
@Copperfield
Android dude
Для передачи из сервиса в активти/фрагменты используйте Binding
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы