gpt4 book ai didi

java - 如何从另一个 fragment 更改 fragment 并将其应用到 main_content 布局上?

转载 作者:行者123 更新时间:2023-12-02 11:08:21 26 4
gpt4 key购买 nike

我正在努力将一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com