在这里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