在這裏Android的來源Activity.java。有些Java可以幫助使用Android源代碼嗎?
尤其在行1646年setContentView()
方法:
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
感謝您的幫助implmenented!讓我添加'com.android.internal.policy.impl的鏈接。政策'和'com.android.internal.policy.impl.PhoneWindow' [2.2](https://android.googlesource.com/platform/frameworks/policies/base/+/froyo-release/phone/com/android/ internal/policy/impl)| [2.3.5](https://android.googlesource.com/platform/frameworks/base/+/android-2.3.5_r1/policy/src/com/android/internal/policy/impl)。 – midnite