Открыть фрагмент изнутри фрагмента без отображения пользовательского интерфейса предыдущего фрагмента

Я пытаюсь открыть фрагмент (PageFragment) изнутри фрагмента (UpcomingFragment).

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

Я пробовал как .getSupportFragmentManager(), так и GetChildFragmentManager(), ни один из них не решает проблему. И просматривая simular thread здесь, я не могу получить рабочий результат.

mRecyclerAdapter.setItemClickListener(new CardOnClicked() {
    @Override
    public void onCardClicked(int position) {
        Log.d(TAG, "Test");

        Fragment pageView = new PageFragment();


        FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction()

        // Replace whatever is in the fragment_container view with this fragment,
        // and add the transaction to the back stack so the user can navigate back
        transaction.replace(R.id.frag, pageView);
        transaction.addToBackStack(null);
        transaction.commit();


    }
});

Вы можете найти мой репозиторий Github здесь:

https://github.com/КайлГвинДэвис/aTV

Вы можете увидеть проблему здесь

https://imgur.com/a/BHkXOsc

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Два фрагмента никогда не должны общаться напрямую. Вся коммуникация должна осуществляться через активность хоста. Для этого используйте интерфейс.

Создайте интерфейс:

public interface IMainActivity {
void navigateFragment(); 
}

Добавьте интерфейс для переопределения адаптера onAttachedToRecyclerView:

private IMainActivity mInterface;

@Override
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
    //instantiate interface when view attach to the recycler view
    mInterface = (IMainActivity) mContext;
}

holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mInterface.navigateFragment();
        }
    });

Наконец, реализуйте интерфейс от к MainActivity и переопределите метод, а затем добавьте свой фрагмент.

 @Override
public void navigateFragment() {
    mViewProfileFragment = new ViewProfileFragment();

    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.add(R.id.main_content_frame, mViewProfileFragment, getString(R.string.tag_fragment_view_profile));
    transaction.commit();
}

Эй, спасибо за ваш ответ, не могли бы вы объяснить немного больше, почему это так, я пытался прочитать документы из Google, и я нашел немного сложно понять.

Kyle 15.05.2019 19:31

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