Интерфейс / слушатель фрагмента работает с Activity, но не с другим Fragment - PullRequest
0 голосов
/ 10 сентября 2018

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

@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");
    }
}

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

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

1 Ответ

0 голосов
/ 10 сентября 2018

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

public class ChildFragment extends Fragment {

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

        if (fragment instanceof MyPostsUpdateListener) {
            myPostsUpdateListener = (MyPostsUpdateListener) fragment;
            myPostsUpdateListener.onData(data);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...