Intereting Posts
Как я могу манипулировать предварительным просмотром камеры? Получить каталог из пути к файлу в java (android) Что такое SortedList <T>, работающий с RecyclerView.Adapter? Запросить программную клавишу «Назад» программно? Android Studio 2.0 – пауза / белый экран при первом запуске приложения Каков правильный способ применения Tap To Focus для камеры? Не может удалять файл из внешнего хранилища в программном обеспечении Android Вызвать общедоступный метод в классе Activity из другого класса? Запустите Google Hangouts от Intent в приложении New Hangouts для Android. DDMS не отображает темы с устройства Пользовательская клавиатура: обработка изменения вводаType В C, tan (30) дает мне отрицательное значение! Зачем? Android WebView JellyBean -> Не должно быть: не найдены узлы проверки на основе прямой основы Как получить количество дней между двумя экземплярами календаря? Android-устройства adb неавторизованные

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

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

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"));