java—findfragmentbyid是否接受framelayout而不是片段?

lymnna71  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(276)

我不太了解 Fragments 在我观看的视频中,他们使用了以下代码:

FragmentManager fragmentManager = getSupportFragmentManager();
        Fragment fragment = fragmentManager.findFragmentById(R.id.my_container);

        if(fragment == null){
            fragment = new FragmentMain();
            fragmentManager.beginTransaction()
                    .add(R.id.my_container, fragment)
                    .commit();
        }

创建 Fragment 通过java。
findFragmentById 他们经过了一个公园 FrameLayout (我的容器)而不是 Fragment . 我在文档中读到您可以传递一个容器id,但它将如何将其初始化为 Fragment . 这是怎么回事?
我应该用吗 FragmentManager ? 我在文件里看到它被否决了。
谢谢!

5kgi1eie

5kgi1eie1#

它将用给定的id查看容器并给您 Fragment 现在在里面。任何时候都不会 findFragmentById 初始化 Fragment ,它将只查看现有的,顾名思义。
你不应该使用本地语言 FragmentManager 在新版本的android上,因为它已经被弃用了,但是 FragmentManager 来自androidx片段库,提供相同的功能。另请参见:https://developer.android.com/guide/fragments/fragmentmanager

9jyewag0

9jyewag02#

findFragmentById 他们经过了一个公园 FrameLayout(my_container) 而不是碎片。我在文档中看到您可以传递一个容器id,但是它混淆了如何将它初始化为一个片段。这是怎么回事?
你可以把容器看作一个占位符,一次可以容纳一个片段;最初它没有碎片,在本例中 if(fragment == null) 将被满足,因此您可以执行一个片段事务(因此,容器布局现在被一个片段视图替换,该视图是另一个分配给这个特定片段并由其返回的xml布局) onCreateView() 回拨。 onCreateView() 是系统调用的片段的生命周期回调之一,直到用户在占位符中完全看到片段为止。
稍后,当您希望这个占位符保存另一个片段时,您可以再次执行事务,其中它对新片段重复相同的操作,占位符将显示新片段的布局,并且将调用此片段的生命周期方法
我应该用吗 FragmentManager ? 我在文件里看到它被否决了。 FragmentManger (来自 android.app Package )及其 getFragmentManager() 已弃用,您应该使用 FragmentManager (来自 androidx.fragment.app Package )和 getSupportFragmentManager() 就像你已经做的那样。
有关更多信息,您可以查看fragmentmanager文档和FragmentLifecycle。

相关问题