在阅读“Hello,Android”一书的时候,我注意到了:
每个带有
onCreate(Bundle savedInstanceState)
方法的java文件都有 受保护访问修饰符EXCEPT在程序的主要活动中[具有:public void onCreate(Bundle savedInstanceState)
]。
为什么onCreate
方法public
在该计划的主要活动上,但protected
在其他地方?
答案 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
。这可能就是这种方法在书中公开的原因。