【问题标题】:public onCreate(), or protected onCreate()?公共 onCreate() 还是受保护的 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)”。为什么??我不敢相信没有特殊原因!!

标签: android public protected oncreate


【解决方案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 的活动模板。这可能是该方法在书中公开的原因。

        【讨论】:

          猜你喜欢
          • 2011-08-04
          • 2011-10-11
          • 1970-01-01
          • 2012-02-13
          • 2011-05-29
          • 1970-01-01
          • 2013-08-14
          • 2011-09-02
          • 2011-07-21
          相关资源
          最近更新 更多