Как из фрагмента поменять цвет кнопки в активности

Имею кнопки в активности, по нажатию на кнопки я открываю фрагменты. Мне нужно сделать так, чтобы при открытии фрагмента в нем срабатывал код вроде

ImageButton imageButton = (ImageButton)findViewById(R.id.button);
imageButton.setImageResource(R.drawable..);

Пробовал прописывать во всех OnCreate`ах фрагмента это:

ImageButton imageButton = (ImageButton)getActivity().findViewById(R.id.button);
imageButton.setImageResource(R.drawable..);

но приложение крашилось с ошибкой на 2 строке из примера


Ответы (1 шт):

Автор решения: Andrew

Как вариант можно сделать интерфейс между фрагментом и активностью и в определенный момент передавать информацию об изменении цвета кнопки. Делаем интерфейс:

public interface OnDataPass {
    public void onDataPass();
}

в методе фрагмента OnAttach():

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    dataPasser = (OnDataPass) context;
}

как вы могли понять dataPasser это глобальная переменная. В нужный момент вызывает метод интерфейса:

public void passData() {
    dataPasser.onDataPass();
}

так же необходимо реализовать интерфейс в целевой активности implements OnDataPass:

@Override
public void onDataPass() {
    Log.d("LOG","change color");
}
→ Ссылка