簡體   English   中英

生命周期方法和其他方法從哪里獲取它們的參數值?

[英]Where do lifecycle methods, and other methods, get their parameter values?

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


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

onCreateView發生在一個LayoutInflater@Nullable Viewgroup ,和@Nullable Bundle
我的問題是在我所指的示例程序中: sceneform-android-sdk

似乎沒有一個實例,我們調用方法onCreateView並傳入 LayoutInflatter、Viewgroup 和 Bundle。 然而,我們可以使用傳入的參數。
是的,我們調用了super.onCreateView(...) ,但是同樣,作為參數傳遞給 super 的值是從哪里來的,也就是我們local版本的 onCreateView 的參數

重申一下,我的主要問題是調用 onCreateView 方法並傳入參數的是什么?
我的第二個問題是,如果我要在 onCreateView 的同一活動中創建一個方法:

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

我的 foo 方法也會獲得與 onCreateView 方法相同的參數值嗎?
最后,我的第三個問題也是類似的。 返回了一個視圖,但和以前一樣,看起來我們沒有處理返回。 那么,什么處理返回值?
如果可能,我會謙虛地請求進一步閱讀有關 Android 核心代碼如何工作的內容,以便實現我自己的方法來正確使用 Android 的參數以及如何正確地將值返回給 Android。

Fragment.onCreateView()文檔說明如下:

這將在 onCreate(Bundle) 和 onActivityCreated(Bundle) 之間調用。

Android 框架自己進行所有生命周期調用。Android 框架將在片段上調用onCreate() to initialize the fragment. At some later time, the Android framework will call to initialize the fragment. At some later time, the Android framework will call在片段上to initialize the fragment. At some later time, the Android framework will call onCreateView()`。 傳遞以下參數:

  • LayoutInflaterLayoutInflater對象,可用於膨脹Fragment任何視圖。 框架從ActivityContext獲取LayoutInflater

  • ViewGroup :如果非空,這是片段的 UI 應該附加到的父視圖。 該片段不應添加視圖本身,但這可用於生成視圖的LayoutParams 此參數是保存Fragment的容器View

Bundle :如果非空,則此片段是根據此處給出的先前保存的狀態重新構造的。 在這種情況下, Bundle包含Fragment最近保存的狀態(即:最近調用FragmentonSaveInstanceState()方法的數據)。

關於您的其他問題:

  • 如果您定義了一個方法foo() ,Android 框架將永遠不會調用它。 Android 框架有一組特定的已定義方法,它在特定時間調用特定組件( Activity, Service, BroadcastReceiver, Fragment等)。

  • onCreateView()返回的View將被 Android 框架使用。 文檔清楚地說明了如何使用返回的View對象:

如果您從這里返回一個視圖,稍后將在釋放視圖時在onDestroyView()調用您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM