1. Activity的setContentView(int)方法,其實是這樣的:
public void setContentView(intlayoutResID) {
getWindow().setContentView(layoutResID);
initActionBar();
}
getWindow()方法是傳回自PolicyManager.makeNewWindow()方法
“mWindow = PolicyManager.makeNewWindow(this)”
這樣擷取的一個Window對象,由于Window是個抽象類,唯一的基礎是PhoneWindow,是以查找到PhoneWindow的setContentView(int)方法:
public void setContentView(intlayoutResID) {
if (mContentParent == null) {
installDecor();
} else {
mContentParent.removeAllViews();
}
mLayoutInflater.inflate(layoutResID, mContentParent);
finalCallbackcb = getCallback();
if (cb != null && !isDestroyed()) {
cb.onContentChanged();
}
}
是以最後Activity中還是調用了LayoutInflater.inflate()方法。