public onCreate(),还是protected onCreate()?

时间:2012-09-17 14:13:24

标签: android public protected oncreate

在阅读“Hello,Android”一书的时候,我注意到了:

  

每个带有onCreate(Bundle savedInstanceState)方法的java文件都有   受保护访问修饰符EXCEPT在程序的主要活动中[具有:public void onCreate(Bundle savedInstanceState)]。

为什么onCreate方法public在该计划的主要活动上,但protected在其他地方?

4 个答案:

答案 0 :(得分:2)

onCeate()受到保护,以避免从活动对象中调用它。

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

由于此方法仅在创建活动时调用,因此自行调用它很可能会为您提供 nullpointerException ,因为尚未创建活动。 S/O Post

答案 1 :(得分:1)

您可以更改方法的可见性。您不能做的是:降低可见性(将公共方法设为私有),访问私有方法(将其公开)

答案 2 :(得分:0)

它也可以是protected。没有什么重要或明智的。

答案 3 :(得分:0)

没有理由将该方法公之于众(但这样做并不影响任何事情)。你不应该手动调用它。

顺便说一句,Intellij IDEA的活动模板包含公共onCreate。这可能就是这种方法在书中公开的原因。