公共 onCreate() 还是受保护的 onCreate()?
Posted
技术标签:
【中文标题】公共 onCreate() 还是受保护的 onCreate()?【英文标题】:public onCreate(), or protected onCreate()? 【发布时间】:2012-09-09 18:44:33 【问题描述】:在阅读“Hello, android”一书时,我注意到:
每个带有
onCreate(Bundle savedInstanceState)
方法的java文件,都有 protected 访问修饰符 EXCEPT 在程序的主 Activity [具有:public void onCreate(Bundle savedInstanceState)
]。
为什么onCreate
方法public
在程序的主Activity上,而protected
在其他地方?
【问题讨论】:
您可以在所有活动中使用 public 访问修饰符...... 你能告诉我们那个程序做了什么吗? 这是一个数独程序,如前所述,所有具有 onCreate 方法的类 - 除了在主要活动中 - 都具有“受保护的 void onCreate(Bundle savedInstanceState)”。为什么??我不敢相信没有特殊原因!! 【参考方案1】:也可以是protected
。没有什么重要或明智的。
【讨论】:
【参考方案2】:您可以更改方法的可见性。你不能做的是:降低可见性(将公共方法设为私有),访问私有方法(将其设为公开)
【讨论】:
【参考方案3】:onCeate() 受到保护,以避免从活动对象中调用它。
MyActivity activity = new MyActivity();
activity.onCreate(args); // which doesn't make sense because activity is not yet created
由于此方法仅在活动创建时调用,因此您自己调用它很可能会给您一个 nullpointerException,因为活动尚未创建。 S/O Post
【讨论】:
【参考方案4】:没有理由公开该方法(但这样做不会影响任何事情)。无论如何,您不应该手动调用它。
顺便说一下,Intellij IDEA 有带有公共onCreate
的活动模板。这可能是该方法在书中公开的原因。
【讨论】:
以上是关于公共 onCreate() 还是受保护的 onCreate()?的主要内容,如果未能解决你的问题,请参考以下文章