У меня есть фрагмент A, который имеет интерфейс, который будет возвращать значение TextView. Фрагмент A инициализируется и присоединяется к FragmentB. Вот код для фрагментов A и B.
Фрагмент А
public class FragmentA extends Fragment {
...
public interface Listener {
void onValue(int value);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof Listener) {
listener = (Listener) context;
} else {
throw new RuntimeException(context.toString() + " must implement Listener");
}
}
}
Фрагмент Б
public class FragmentB extends Fragment implements FragmentA.Listener {
...
private void initFragmentA() {
FragmentManager fragmentManager = getChildFragmentManager();
fragmentA = FragmentA.newInstance();
fragmentManager.beginTransaction().add(container, fragmentA, TAG).commit();
}
@Override
public void onValue(int value) {
}
}
При запуске приложения произошла ошибка:
Java.lang.RuntimeException: ####.page.MainActivity@1f7f316c must implement Listener
at ####.widget.FragmentA.onAttach(FragmentA.java:66)
MainActivity содержит фрагмент B, но фрагмент B уже реализовал интерфейс фрагмента A. Почему произошла ошибка? Интерфейс, реализованный в родительском фрагменте, не работает?