gpt4 book ai didi

android - 如何通知 Activity NavHostFragment 子 fragment 附件

转载 作者:行者123 更新时间:2023-12-04 23:56:12 26 4
gpt4 key购买 nike

我有一个 Activity ,其中包含一个带有给定导航图(和经典子 fragment )的 NavHostFragment。我的子 fragment 可能会触发事件(通过接口(interface)声明),因此它们有一个方法 setXXXlistener(Interface) 来注册实现该接口(interface)的监听器。

那是可以实现接口(interface)的 Activity (因为它知道对事件做什么)。

为此,我希望在显示子 fragment 时调用 Activity.onAttachFragment 方法,以便执行如下操作:

public void onAttachFragment(@NonNull Fragment fragment)
{
super.onAttachFragment(fragment);
if( fragment instanceof OneOfMyFragment)
{
((OneOfMyFragment)fragment).setXXXListener(this);
}
}

但事实并非如此; onAttachFragment 使用 NavHostFragment 参数调用一次。

所以我查看了 NavHostFragment,解决方案可能是使用返回 FragmentManager 的 NavHostFragment.getChildFragmentManager(),然后我可以执行 FragmentManager.addFragmentOnAttachListener(listener),这样我就可以进行自己的注册。

问题是:FragmentManager.addFragmentOnAttachListener 似乎是 documented但未在源文件中定义! (至少AndroidStudio不知道,不会编译)

在我的 gradle 文件中,我目前有这些版本(但也尝试使用 API 30):

compileSdkVersion 29
buildToolsVersion "29.0.2"

targetSdkVersion 29

implementation 'androidx.navigation:navigation-fragment:2.3.2'
implementation 'androidx.navigation:navigation-ui:2.3.2'

有什么想法吗? (实现我的目标,或者解决未定义的错误)

最佳答案

androidx.navigation:navigation-fragment:2.3.2 仅依赖于 Fragment 1.2.4,但 addFragmentOnAttachListener API 仅在 Fragment 1.3.0-alpha06 中添加.因此,如果您想使用该新 API,您需要专门添加对 Fragment 1.3 版本(当前为 1.3.0-rc01)的依赖:

implementation 'androidx.navigation:navigation-fragment:2.3.2'
implementation 'androidx.navigation:navigation-ui:2.3.2'

// Add this line
implementation 'androidx.fragment:fragment:1.3.0-rc01'

关于android - 如何通知 Activity NavHostFragment 子 fragment 附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65604487/

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