6

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

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

为什么onCreate方法public在程序的主Activity上,却protected在其他地方?

4

4 回答 4

2

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

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

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

于 2016-05-01T13:49:04.733 回答
1

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

于 2012-09-17T14:49:57.787 回答
0

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

于 2012-09-17T14:16:42.453 回答
0

没有理由公开该方法(但这样做不会影响任何事情)。无论如何,您不应该手动调用它。

顺便说一句,Intellij IDEA 有带有 public 的 Activity 模板onCreate。这可能是该方法在书中公开的原因。

于 2016-05-01T14:06:44.400 回答