gpt4 book ai didi

android - 用 fragment 替换一些东西

转载 作者:行者123 更新时间:2023-11-30 03:00:18 26 4
gpt4 key购买 nike

如果我通过这段代码用一个 fragment 替换(比方说)一个 TextView:

transaction.replace(R.id.TextView01, fragment1);

新 fragment (现在在布局中可见)是否与替换 fragment 具有相同的 ID? (在本例中,它是 R.id.TextView01)。

这可能看起来像是胡说八道,但我将此操作设置为按钮上的操作并重复按下它不会导致任何错误。

那么,它是否具有被替换的 ID,或者当我点击几次时它就没有被替换(因为 fragment 有它的唯一 ID)?

最佳答案

当您执行 replace(id, fragment) 时,您不会替换 id,而是替换 view。第一个参数是 int containerViewId 它服务于:

Identifier of the container whose fragment(s) are to be replaced

这只是容器。如您所知,replace 方法是 removeadd 方法的组合。查看remove方法时,可以看到:

Remove an existing fragment. If it was added to a container, its view is also removed from that container.

您使用remove(Fragment fragment),您不使用任何id。此外,“来自那个容器”意味着容器不会从布局中删除,因此您不使用任何 id 并减少容器 ID。
拥有“id”的唯一方法是使用:

replace(int containerViewId, Fragment fragment, String tag)  

String 标记 允许您使用findFragmentByTag(String) 检索此 fragment 。
最后,正如@Squonk 所说,将 TextView 替换为 Fragment 真的很“丑陋”,更不用说像 LinearLayoutRelativeLayout 等。显示 fragment 的唯一“正确”方式是 FrameLayout,它:

is designed to block out an area on the screen to display a single item.

如果您稍微搜索一下 FrameLayoutLinearLayoutRelativeLayout 等扩展 ViewGroup 但只有一个可以包含一个 fragment 并重叠它是 FrameLayout 的 View (就像一个特殊的 ViewGroup)。

关于android - 用 fragment 替换一些东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22639813/

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