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