Activity.javaのsetContentView()
メソッドが呼び出している/実行していることを正確に知りたいです。
Android のソース コードと 1646 行目のコード スタブを次に示します。
public void setContentView(int layoutResID) {
getWindow().setContentView(layoutResID);
}
これが私の痕跡です...
642行目で、それがタイプであることがわかりますandroid.view.Window
private Window mWindow;
しかし、Window.javaは抽象クラスです。また、738 行目では、メソッドも抽象化されています。
public abstract void setContentView(int layoutResID);
実際の関数本体はどこに実装されますか?
Activity.javaファイルに戻ると、3746 行目に次の初期化がいくつかありますmWindow
。
mWindow = PolicyManager.makeNewWindow(this);
mWindow.setCallback(this);
...
さて、についてcom.android.internal.policy.PolicyManager
:makeNewWindow()
public static Window makeNewWindow(Context context) {
return sPolicy.makeNewWindow(context);
}
と
private static final IPolicy sPolicy;
Class policyClass = Class.forName(POLICY_IMPL_CLASS_NAME);
sPolicy = (IPolicy)policyClass.newInstance();
IPolicy.javaはインターフェースです。つまり、まったく実装されていません。
私の痕跡はこれ以上進むことができません。助けてくれませんか?
特に、私Activity.setContentView()
は最終的にandroid.support.v4.app.Fragment.java
のFragment.onInflate()
- 920 行目、Fragment.onAttach()
- 928 行目、Fragment.onCreate()
- 953 行目、Fragment.onCreateView()
- 967 行目、Fragment.onViewCreated()
- 991 行目を呼び出すことを知っています。