首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于"Hello World“Android教程的新手问题

关于"Hello World“Android教程的新手问题
EN

Stack Overflow用户
提问于 2011-09-09 15:04:38
回答 5查看 4K关注 0票数 4

刚刚开始使用Android开发和Java。所以,这是我正在使用的代码:

代码语言:javascript
运行
复制
package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroidActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

在这里声明onCreate()方法的目的是什么:

代码语言:javascript
运行
复制
public void onCreate(Bundle savedInstanceState) {

然后在这里使用super调用onCreate()方法:

代码语言:javascript
运行
复制
super.onCreate(savedInstanceState);

这是否意味着您将从Activity类而不是HelloAndroidActivity类调用onCreate()方法?如果是这样,那么在HelloAndroidActivity类中声明具有相同名称的方法有什么意义呢?

感谢您的任何澄清。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-09 15:11:13

在普通的Java中,onCreate是一种main(String[] args)函数。这是你设置代码的地方。

票数 1
EN

Stack Overflow用户

发布于 2011-09-09 15:24:35

在您的示例中,HelloAndroidActivity是一个继承自Activity的类。然后重写基类(Activity)的onCreate方法。当您在派生类中定义与基类中现有方法具有相同签名的方法时,就会发生重写。这意味着当我在HelloAndroidActivity的实例上调用onCreate时,我将执行HelloAndroidActivity版本,而不是基类(Activity)的版本。

重写版本中的指令super.OnCreate(savedInstanceState)显式调用该方法的基类版本。这意味着您希望HelloAndroidActivity.onCreate首先执行基类的实现,然后再运行一些代码。

以以下示例来说明此行为(假设方法Output只是将某些内容输出到屏幕):

1.

代码语言:javascript
运行
复制
class A
{
    public void DoSomething()
    {
        Output("A");
    }
}

在这种情况下,调用A.DoSomething()将输出"A“。

2.

假设我们仍然有如上所述定义的类A,并且如下所示:

代码语言:javascript
运行
复制
class B extends A
{
}

在这种情况下,调用B.DoSomething()也会输出"A“。

3.

假设我们仍然具有如上定义的类A,并改为如下所示:

代码语言:javascript
运行
复制
class B extends A
{
    @Override
    public void DoSomething()
    {
        Output("B");
    }
}

现在,调用B.DoSomething()将输出"B“。

4.

假设我们仍然有如上定义的类A,现在改为:

代码语言:javascript
运行
复制
class B extends A
{
    @Override
    public void DoSomething()
    {
        super.DoSomething();
        Output("B");
    }
}

现在,调用B.DoSomething()将输出"A“,然后输出"B”。

票数 15
EN

Stack Overflow用户

发布于 2011-09-09 15:08:16

您正在创建一个继承自Activity的类;但是您必须定义它的行为,因此您在创建时告诉您的类调用基类来完成所有必须完成的事情(super.onCreate()),然后设置您的布局以显示您的屏幕/应用程序(setContentView())。

还有一件事:看看在public void onCreate(Bundle savedInstanceState):override之前定义的@Override:override意味着您正在扩展基本方法,让您的派生类完成基本方法的所有工作,包括(在)您的逻辑之后。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7358219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档