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 行目を呼び出すことを知っています。