Интерфейс / слушатель фрагмента работает с activity, но не с другим фрагментом

У меня есть фрагмент, внутри которого тоже есть два фрагмента. И я пытаюсь реализовать слушателей в двух фрагментах для родительского фрагмента. Однако я получаю сообщение об ошибке

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    if (context instanceof MyPostsUpdateListener) {
        myPostsUpdateListener = (MyPostsUpdateListener) context;
    } else {
        throw new RuntimeException(context.toString()
                + " must implement MyPostsUpdateListener");
    }
}

Я реализовал нечто похожее на это таким же образом, только с другим слушателем, и на самом деле работает, но в этом случае он внедряется в действие, а не в родительский фрагмент.

Есть ли какой-нибудь способ обойти это? Потому что я уверен, что я реализовал это таким же образом для некоторого другого действия, с той лишь разницей, что он реализуется действием, а в этом случае, который дает ошибку, фрагментом.

приведенный выше код находится в дочернем фрагменте или в родительском фрагменте.

Sunny 10.09.2018 10:31

Приведенный выше код находится в дочернем фрагменте. Который я буду использовать для родительского фрагмента, добавив ParentFragment.MyPostsUpdateListener к родительскому фрагменту.

Rick 10.09.2018 10:39
0
2
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы передать данные обратно в родительский фрагмент, вы можете получить экземпляр родительского фрагмента внутри дочернего фрагмента, вызвав метод getParentFragment.

public class ChildFragment extends Fragment {

    private void sendToParentFragment(String data) {
        Fragment fragment = getParentFragment();

        if (fragment instanceof MyPostsUpdateListener) {
            myPostsUpdateListener = (MyPostsUpdateListener) fragment;
            myPostsUpdateListener.onData(data);
        }
    }
}

Спасибо! Это было то, что я искал.

Rick 10.09.2018 10:40

Другие вопросы по теме