-1

在以下 Android 生命周期方法中:


  @Override
  public View onCreateView(
      LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = super.onCreateView(inflater, container, savedInstanceState);
    ...
    return view;
  }

onCreateView 接受 ‍‍‍‍‍‍‍‍‍‍<code>LayoutInflater @Nullable Viewgroup、 和@Nullable Bundle
我遇到的问题是在我所指的示例程序中:sceneform-android-sdk

似乎没有我们调用该方法onCreateView并传入 LayoutInflatter、Viewgroup 和 Bundle 的实例。然而,我们可以使用传入的参数。
是的,我们调用super.onCreateView(...)了 ,但同样,作为参数传递给 super 的值(即我们版本的 onCreateView 的参数local)是从哪里来的?

重申一下,我的主要问题是调用 onCreateView 方法并传入参数的是什么?
我的第二个问题是,如果我要在 onCreateView 所在的同一活动中创建一个方法:

public void foo(LayoutInflater myInflater) // Or it takes in a Bundle, Viewgroup, etc.

我的 foo 方法是否也会获得与 onCreateView 方法相同的参数值?
最后,我的第三个问题也是类似的。一个视图被返回,但和以前一样,它看起来不像我们处理返回。那么,什么处理返回值?
如果可能的话,我会谦虚地请求进一步阅读有关 Android 核心代码如何工作的信息,以便实现我自己的方法,正确使用 Android 的参数以及如何正确地将值返回给 Android。

4

1 回答 1

0

文档Fragment.onCreateView()表明以下内容:

这将在 onCreate(Bundle) 和 onActivityCreated(Bundle) 之间调用。

Android 框架自己进行所有生命周期调用。Android 框架将onCreate()在片段上调用片段to initialize the fragment. At some later time, the Android framework will callonCreateView()`。传递以下参数:

  • LayoutInflater:LayoutInflater可用于扩充Fragment. 框架LayoutInflater从. Activity_Context

  • ViewGroup:如果非空,这是片段的 UI 应该附加到的父视图。片段不应添加视图本身,但这可用于生成LayoutParams视图的。此参数是View保存Fragment.

Bundle:如果非空,则此片段将从此处给出的先前保存的状态重新构建。在这种情况下,Bundle包含最近保存的状态Fragment(即:来自最近调用FragmentsonSaveInstanceState()方法的数据)。

关于你的其他问题:

  • 如果你定义一个方法foo(),Android 框架永远不会调用它。Android 框架有一组特定的定义方法,它Activity, Service, BroadcastReceiver, Fragment在特定时间调用某些组件(等)。

  • View返回的 from将onCreateView()被 Android 框架使用。文档清楚地说明了如何使用返回的View对象:

如果你从这里返回一个视图,你稍后会在 onDestroyView()视图被释放时被调用。

于 2020-01-20T15:53:27.303 回答