[英]How to change fragment from another fragment an apply it on the main_content layout?
我正在努力从另一个片段中更改一个片段。 在我的main_activity中,我有一个具有bottomnavigationview的布局文件和页面内容的框架布局。 在NavigationView上从片段到片段的更改工作正常,但是如果我从片段访问新的“子片段”,则新片段是透明的。
有什么建议么? 下面的代码来自我的片段和我的mainactivity。
MainActivity parentActivity = (MainActivity) getActivity();
parentActivity.switchContent(new VisArrangementInfo(), data, true);
MainActivity中的switchContent:
public void switchContent(final Fragment fragment, Bundle data, final Boolean addToBackStackOption){
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, fragment)
.addToBackStack(null)
.commit();
}
id content_frame是MainActivity的布局文件的ID。 bottomnavigationview和framelayout在此文件中。 框架布局的ID为“ main_frame”。
在我理解之后,我想更改“ main_frame”而不是“ content_fram”,因为这里应该是主要内容。 当我这样做时,我找不到片段的布局,我尝试完全打开。 是因为我要替换框架布局而不是整个布局吗?
在Fragment A
定义一个接口。
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
,以便您可以从MainActivity切换到Fragment 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
}
第一次使用add
而不是replace
:
public void switchContent(final Fragment fragment, Bundle data, final Boolean addToBackStackOption){
getSupportFragmentManager()
.beginTransaction()
.add(R.id.content_frame, fragment)
.addToBackStack(null)
.commit();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.