作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力将一个 fragment 与另一个 fragment 进行更改。在我的 main_activity 中,我有一个布局文件,其中包含底部导航 View 和页面内容的框架布局。导航 View 上从一个 fragment 到另一个 fragment 的更改工作正常,但如果我从 fragment 访问新的“子 fragment ”,则新 fragment 是透明的。
有什么建议吗?下面的代码来 self 的 fragment 和我的主要 Activity 。
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_frame 是我的 MainActivity 的布局文件的 id。底部导航 View 和框架布局位于此文件中。框架布局的 ID 是“main_frame”。
根据我的理解,我想更改“main_frame”而不是“content_fram”,因为它应该是主要内容。当我这样做时,我无法找到我尝试打开的 fragment 的布局。是因为我试图替换框架布局而不是整个布局吗?
最佳答案
在您的Fragment A
中定义一个接口(interface)。
public interface FragmentEventListener {
void onFragmentChangeEvent(Fragment newFragment);
}
private FragmentEventListener listener;
public void setEventListener(FragmentEventListener listener) {
this.listener = listener;
}
在您的 fragment 中,当您想要更改 fragment 时,请调用该方法。
if (listener != null) {
listener.onFragmentChangeEvent(FragmentB);
}
在您的主 Activity 中,实现 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
}
关于java - 如何从另一个 fragment 更改 fragment 并将其应用到 main_content 布局上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50760162/
我是一名优秀的程序员,十分优秀!