gpt4 book ai didi

android - 它是否等同于在 fragment 中调用 getActivity().findViewById 而不是 .findViewById?

转载 作者:行者123 更新时间:2023-11-29 23:18:03 27 4
gpt4 key购买 nike

在我的 fragment 的 onCreateView 方法中,我曾经将膨胀的布局存储在一个变量中,然后将后者传递给我的其他函数,这些函数在这个膨胀的 上调用了 findViewById >查看

现在,我更愿意只返回膨胀的布局(我不存储它)。因此,我不会向调用 findViewById 的其他函数传递任何值。但他们仍然调用 findViewById ;如何?只需调用 Objects.requireNonNull(getActivity()).findViewById

说到 fragment ,是等价的吗?例如:

  1. 在 RAM 或 CPU 消耗方面
  2. 在行为方面(第二种方式有风险吗?)

最佳答案

In terms of RAM or CPU consumption

直接查看 fragment 的 View 会更快,因为您将搜索更浅的层次结构。这不应该与您有关,它在性能方面无关紧要。

In term of behavior (is there any risk with the second way to do it?)

您不应使用 getActivity().findViewById()。 fragment 应该是独立的并直接管理其 View ,而不是通过间接方式(如 getActivity())。由于 findViewById() 的工作方式(这意味着它返回找到的具有指定 ID 的第一个 View ),您还可能会引入细微的错误。

想象一下,您将相同的 fragment 用作 ViewPager 的页面。使用 getActivity().findViewById() 意味着您将仅引用 ViewPager 引用的 fragment 的第一个实例中的 View (而不是其他页面)。另一个例子是当您在 Activity 中有一个带有 id 的 View 和在 Fragment 中有一个具有相同 id 的 View (在更深层次上)。使用 getActivity().findViewById() 将引用 Activity View ,而不是在 fragment 中找到的 View 。

关于android - 它是否等同于在 fragment 中调用 getActivity().findViewById 而不是 <any_inflated_layout>.findViewById?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54967534/

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