Как из фрагмента поменять цвет кнопки в активности
Имею кнопки в активности, по нажатию на кнопки я открываю фрагменты. Мне нужно сделать так, чтобы при открытии фрагмента в нем срабатывал код вроде
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");
}