Не используйте ни один из ваших двух методов.
Возможно, я неправильно понял ваше первое предложение, но просто чтобы быть уверенным, вы запрашиваете способ доступа к представлению, которое существует в MainActivity, пока вы находитесь внутри фрагмента?
Если это то, что вы спрашиваете, то да, как разработчик Android, определенно будут моменты, когда мы сталкиваемся с этим сценарием. Тем не менее, решение определенно НЕ , сделав ваши Представления или Контекст статическими.
Это один из самых простых способов появления ошибок в вашем приложении, с очень высокой вероятностью также утечки памяти. Вот статья от Google, в которой говорится об утечках памяти, связанных с сохранением ссылки на контекст: https://android -developers.googleblog.com / 2009/01 / avoiding-memory-leaks.html
Вместо двух ваших вариантов, есть лучшие решения, которые обычно используют разработчики.
Прежде всего, имейте в виду, что вы НЕ ДОЛЖНЫ иметь прямой доступ к каким-либо представлениям вне вашего текущего макета ... это означает, что если вы находитесь во втором действии, вы не можете напрямую обращаться к представлениям из первого Активность, или если вы находитесь во Фрагменте, вы не имеете прямого доступа к представлениям, принадлежащим его FragmentActivity.
Вместо этого вы позволяете Activity или Fragment обрабатывать свои собственные представления.
Так, например, если вы находитесь в другом действии и хотите обновить некоторые данные в предыдущем действии, вы можете воспользоваться startActivityForResult()
и onActivityResult()
действия, чтобы получить данные, необходимые для немедленного обновления действия по возвращении в приложение.
Для фрагментов, на самом деле есть учебник из документации Android, который описывает очень хороший способ связи между другими фрагментами: https://developer.android.com/training/basics/fragments/communicating
Этот метод заключается в использовании интерфейсов в качестве обратных вызовов, поэтому другой Фрагмент или Действие смогут получать данные и обновлять свои представления в своем собственном макете .
Так что для вашего случая, если вы используете Фрагменты и Действия, вы можете легко сделать так, чтобы ваши фрагменты и действия общались друг с другом более безопасным и более надежным способом.
Кроме того, убедитесь, что вы читаете больше о static
, и это влияет на ваш код, особенно побочные эффекты на компоненты Android. Не используйте небрежно статические без учета некоторых эффектов, которые они могут вызвать, потому что это может вызвать бесконечные проблемы в вашем коде.