【问题标题】:Get the view of a Fragment outside of OnCreateView() - View is null在 OnCreateView() 之外获取片段的视图 - 视图为空
【发布时间】:2020-05-09 18:23:43
【问题描述】:

在 onCreateView 中,我可以使用 inflate 实例化 View,以这种方式:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        // Inflate the layout for this fragment
        if(savedInstanceState == null) {
            v = inflater.inflate(R.layout.fragment_my_team, container, false);
            setUpRecyclerView(v);
        }

        return v;
    }

现在,如果在第一个活动中返回时启动第二个活动,则在此片段中,视图为空,因为它已被调用 onCreateView。 我不知道如何实例化视图。

有解决办法吗?

【问题讨论】:

  • 除了已经给出的答案,我建议您在onViewCreated() 方法中实例化您的视图,而不是onCreateView()
  • 我可以在 onViewCreated() 而不是 onCreateView() 中写 inflate 吗?像这样: v = inflater.inflate(R.layout.fragment_my_team, container, false);但是在 onViewCreated() 中我没有 ViewGroup 容器,怎么找到呢?
  • 不,顾名思义,onCreateView() 旨在膨胀您的视图,但如果您担心如何获取在 onCreateView () 中膨胀的视图引用,那么 onViewCreated() 也有一个视图参数,您可以使用它在布局视图上执行 findViewById()。
  • @AmanGrover 你能用代码解释一下吗?

标签: android android-fragments view fragment-oncreateview


【解决方案1】:

摆脱if(savedInstanceState == null) 验证并在每次调用onCreateView 时创建并返回您的视图。

【讨论】:

  • 问题是第二次没有调用onCreateView,也没有实例化视图。在 onCreateView 之外有没有办法实例化 ViewGroup 容器?怎么样?
  • Fragment 在不需要时不会调用 onCreateView,即如果它已经有 onCreateView 提供的视图。如果您需要访问之前创建的视图,请使用getView()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多