Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

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

#java #android #activity


У меня активность содержит фрагмент. При нажатии кнопки в этом фрагменте, у меня
должны измениться состояния View в макете активности. В активности у меня есть готовый
метод, который будет делать это. Но как мне это реализовать, чтобы при нажатии по этой
кнопки, вызывался бы метод активности?
    


Ответы

Ответ 1



Объявляешь интерфейс с методами которые тебе необходимо выполнять в Activity: interface FragmentActions { void doSomething(); } Имплементируешь интерфейс в Activity: class MainActivity extend Activity implement FragmentActions { override void doSomething(){ ... Вызываешь свои методы реализованные в активности } } Вызываешь метод во фрагменте: class MainFragment extend Fragment { private FragmentActions listener; override void onAttach(Context context){ super.onAttach(context) listener = (FragmentActions)context; } override void onViewCreated(...){ btn.setOnClickListener(()->listener.doSomething()) } }

Ответ 2



Это можно сделать через интерфейс (назовем MyCallback). Создаете интерфейс с названием вашего метода (можно внутри вашего фрагмента). public interface MyCallback{ void method(); } Вашу активити наследуете от этого интерфейса. public class MyActivity extends AppCompatActivity implements MyCallback { @ovveride public void method(){ //логика } } В фрагменте создаете объект данного типа и делаете @Override public class MyFragment extends Fragment { private MyCallback myCallback; @Override public void onAttach(Context context) { super.onAttach(context); myCallback = (MyCallback) context; } } Ну и вызовите метод myCallback.method() где вам надо во фрагмете

Комментариев нет:

Отправить комментарий