我不太了解 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
? 我在文件里看到它被否决了。
谢谢!
2条答案
按热度按时间5kgi1eie1#
它将用给定的id查看容器并给您
Fragment
现在在里面。任何时候都不会findFragmentById
初始化Fragment
,它将只查看现有的,顾名思义。你不应该使用本地语言
FragmentManager
在新版本的android上,因为它已经被弃用了,但是FragmentManager
来自androidx片段库,提供相同的功能。另请参见:https://developer.android.com/guide/fragments/fragmentmanager9jyewag02#
在
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。