Intereting Posts
RelativeLayout – прокрутка вниз Помощник Firebase не отображается в Studio 2.2.3 Firebase и Crashlytics – Какой из них использовать? Как вы используете Intent.FLAG_ACTIVITY_CLEAR_TOP, чтобы очистить стек активности? Статистика приложений для Android на сетевом уровне пользователей Android / установлена Панель действий Кнопка «Назад» не работает Управление музыкальным плеером по умолчанию для Android или любого другого музыкального проигрывателя Должен ли я использовать android LocationManager.getBestProvider каждый раз, когда я запрашиваю обновления местоположения? Повторить изображение с помощью ImageView в RelativeLayout FATAL EXCEPTION: main java.lang.RuntimeException: контент имеет представление с атрибутом id 'android.R.id.list', который не является классом ListView Что происходит с выполнением JavaScript (settimeout и т. Д.), Когда iPhone / Android ложится спать? Как изменить имя пакета приложения для приложения Android через командную строку Службы Google Play и «Нет связанного приложения, связанного с этим идентификатором клиента» Аннотации и приложения AndroidIdSuffix Полоса хода с обеих сторон в андроиде

Вызов методов активности из фрагмента

Я использую фрагмент только внутри одной конкретной родительской активности. Теперь я задаюсь вопросом, есть ли недостатки, если я вызываю методы в родительской активности непосредственно из включенного фрагмента следующим образом:

getActivity (). someMethodInParentActivitiy ()

Более распространенным решением будет определение формального интерфейса прослушивателя в фрагменте для возврата к родительской активности, а затем для реализации этого интерфейса.

Существуют ли какие-либо причины (например, надежность или скорость ), почему я должен использовать второе более сложное решение вместо прямых вызовов метода от фрагмента к активности?

Solutions Collecting From Web of "Вызов методов активности из фрагмента"

Не смотрите на производительность в начале. Помните: «преждевременная оптимизация – это корень всего зла». Второй подход лучше, потому что ваш фрагмент можно использовать в разных действиях. Первый подход вводит больше зависимостей в вашем коде, фрагмент зависит от типа активности. Вы теряете способность тестировать, повторно использовать, небольшой комплекс. Сейчас это может показаться более простым, но в будущем вы увидите 😉

Необходимо выполнить дополнительный бросок:

 Activity activity123 = getActivity(); if(activity123 instanceof ParentActivity) { ((ParentActivity) activity123).someMethodInParentActivity(); } 

Однако, как писал @pawelzieba, если вы хотите использовать этот фрагмент в других действиях, которые, вероятно, так не будут работать так. Cheers

Когда мне нужно сделать что-то подобное, я просто использую BroadcastReceiver, поэтому я могу позвонить ему из любого места.

 BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action != null) { if (action.equals("WHATEVER_ACTION")) { // Do stuff } } } }; 

Тогда в моем фрагменте я просто использую:

Activity.sendBroadcast (новый Intent (). SetAction ("WHATEVER_ACTION"));