Я пытаюсь открыть фрагмент (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
Вы можете увидеть проблему здесь




Два фрагмента никогда не должны общаться напрямую. Вся коммуникация должна осуществляться через активность хоста. Для этого используйте интерфейс.
Создайте интерфейс:
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, и я нашел немного сложно понять.