为什么Activity中的onCreate()受到保护?

Lai*_*uan 10 android android-activity

为什么Activity中的onCreate()受到保护?

或者我应该问:它为什么有效?

受保护的方法只能在类本身的内部或它的后代中调用.所以Android系统不能像"act.onCreate()"那样调用它.所以...怎么称呼它?

顺便说一句,为什么OnClickListener中的onClick()是公开的?有什么不同?

Saa*_*adi 8

所述onCeate()是受保护的,以便避免来自活动对象调用它.

MyActivity activity = new MyActivity();
activity.onCreate(args);  // which doesn't make sense because activity is not yet created
Run Code Online (Sandbox Code Playgroud)

由于此方法仅在创建活动时调用,因此自己调用它很可能会给您一个nullpointerException,因为尚未创建活动.


Zac*_*ner 7

使用公共onClick方法很有用,因为您可以"强制"以编程方式单击某些按钮.一个常见的例子是当用户按下回车键或按下提交按钮时,使代码执行.

我不认为Android直接调用Activity.onCreate.请注意,Activity继承自Context(具有公共构造函数).我的理解是构造函数触发了一些事件,并且onCreate/Pause/Resume/Destroy方法在适当的时候在内部调用.

例如,在创建活动时,必须解析和扩展视图XML文件.这是自动发生的,因此幕后发生的事情是您无法直接控制的.