Java 如何从另一个片段更改片段并将其应用于主内容布局?

Java 如何从另一个片段更改片段并将其应用于主内容布局?,java,android,android-fragments,bottomnavigationview,Java,Android,Android Fragments,Bottomnavigationview,我正在努力将一个片段从另一个片段转变成另一个片段。在我的主要活动中,我有一个布局文件,其中包含一个bottomnavigationview和一个页面内容的framelayout。在navigationview上从一个片段更改为另一个片段效果很好,但是如果我从一个片段访问一个新的子片段,那么新片段是透明的 有什么建议吗?下面的代码来自我的片段和我的主要活动 MainActivity parentActivity = (MainActivity) getActivity();

我正在努力将一个片段从另一个片段转变成另一个片段。在我的主要活动中,我有一个布局文件,其中包含一个bottomnavigationview和一个页面内容的framelayout。在navigationview上从一个片段更改为另一个片段效果很好,但是如果我从一个片段访问一个新的子片段,那么新片段是透明的

有什么建议吗?下面的代码来自我的片段和我的主要活动

MainActivity parentActivity = (MainActivity) getActivity();
            parentActivity.switchContent(new VisArrangementInfo(), data, true);
在MainActivity内切换内容:

public void switchContent(final Fragment fragment, Bundle data, final Boolean addToBackStackOption){
getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.content_frame, fragment)
                .addToBackStack(null)
                .commit();

}
id content_框架是my MainActivity布局文件的id。bottomnavigationview和framelayout在此文件中。framelayout的ID是主框架

在我理解之后,我想改变主框架,而不是内容框架,因为主内容应该在这里。当我这样做时,我根本找不到我试图打开的片段的布局。是因为我试图替换框架布局而不是整个布局吗

第一次使用添加而不是替换:

在片段中定义一个接口

public interface FragmentEventListener {
    void onFragmentChangeEvent(Fragment newFragment);
}

private FragmentEventListener listener;
public void setEventListener(FragmentEventListener listener) {
    this.listener = listener;
}
在片段中,当您想要更改片段时,调用该方法

if (listener != null) {
    listener.onFragmentChangeEvent(FragmentB);
}
在主活动中,实现FragmentEventListener,以便可以从主活动切换到片段B

public class MainActivity  implements FragmentA.FragmentEventListener {
...
...
fragmentB.setEventListener(this); // here identify the listener.
....

@Override
public void onFragmentChangeEvent(Fragment newFragment) {
    switchContent  // Switch to Fragment B here
}

这没什么区别。有什么区别?对我来说,替换布局而不是添加新布局似乎是合乎逻辑的
public class MainActivity  implements FragmentA.FragmentEventListener {
...
...
fragmentB.setEventListener(this); // here identify the listener.
....

@Override
public void onFragmentChangeEvent(Fragment newFragment) {
    switchContent  // Switch to Fragment B here
}