gpt4 book ai didi

android - 从 Activity 中获取嵌套 fragment

转载 作者:太空狗 更新时间:2023-10-29 16:38:12 25 4
gpt4 key购买 nike

我有一个包含 fragment F 的 Activity A。在 fragment F 的 xml 文件中,我有一个名为“container”的 FrameLayout。在这个容器中,我会在需要时加载 fragment X 和 Y。

现在,有没有办法确定 Fragment F 当前正在显示 X 和 Y 中的哪一个?

在 Activity A中,我要实现

onBackPressed(){
if(F is displaying X)
super.onBackPressed();
else //Y is currently displayed
//replace fragment Y with fragment X

我想我可能需要打电话

    getSupportFragmentManager().findFragmentByTag("F"). ?? 

这就是我如何替换 X 和 Y

public void showFragment(Fragment f){
getChildFragmentManager().beginTransaction().replace(R.id.container, f).commit();
currentChildFragment = f;
}

谁能指出我正确的方向?多谢!

最佳答案

如果我没看错,你有 Activity -> Fragment with container 并且在那个容器中,你在 X 和 Y 之间放置/替换 fragment 。为什么你有那个 fragment (F) 级别?

无论如何,您都是通过 id 替换 fragment ,因此您可以使用 findFragmentById 检索当前 fragment

Fragment fragment = getChildFragmentManager().findFragmentById(R.id.container);
if(fragment != null){
if(fragment instanceof FragmentX) (..)
else (..)
}

该代码可以作为 F fragment 的方法包含(因为我们使用 getChildFragmentManager())。要将该信息发送回 Activity 本身,该 Activity 必须找到 F fragment (它必须有一个 id)并调用该方法,您可以在其中检查显示哪个 fragment (X 或 Y)。如果您删除 Fragment F 级别,它可能会被简化,但我猜您会在其他地方重复使用相同的 fragment 。

关于android - 从 Activity 中获取嵌套 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22962963/

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