У меня активность содержит фрагмент. При нажатии кнопки в этом фрагменте, у меня должны измениться состояния View в макете активности. В активности у меня есть готовый метод, который будет делать это. Но как мне это реализовать, чтобы при нажатии по этой кнопки, вызывался бы метод активности?
Это можно сделать через интерфейс (назовем 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() где вам надо во фрагмете
Объявляешь интерфейс с методами которые тебе необходимо выполнять в 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())
}
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости