刚刚开始使用Android开发和Java。所以,这是我正在使用的代码:
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()方法的目的是什么:
public void onCreate(Bundle savedInstanceState) {
然后在这里使用super调用onCreate()方法:
super.onCreate(savedInstanceState);
这是否意味着您将从Activity类而不是HelloAndroidActivity类调用onCreate()方法?如果是这样,那么在HelloAndroidActivity类中声明具有相同名称的方法有什么意义呢?
感谢您的任何澄清。
发布于 2011-09-09 15:11:13
在普通的Java中,onCreate
是一种main(String[] args)
函数。这是你设置代码的地方。
发布于 2011-09-09 15:24:35
在您的示例中,HelloAndroidActivity
是一个继承自Activity
的类。然后重写基类(Activity
)的onCreate
方法。当您在派生类中定义与基类中现有方法具有相同签名的方法时,就会发生重写。这意味着当我在HelloAndroidActivity
的实例上调用onCreate
时,我将执行HelloAndroidActivity
版本,而不是基类(Activity
)的版本。
重写版本中的指令super.OnCreate(savedInstanceState)
显式调用该方法的基类版本。这意味着您希望HelloAndroidActivity.onCreate
首先执行基类的实现,然后再运行一些代码。
以以下示例来说明此行为(假设方法Output
只是将某些内容输出到屏幕):
1.
class A
{
public void DoSomething()
{
Output("A");
}
}
在这种情况下,调用A.DoSomething()
将输出"A“。
2.
假设我们仍然有如上所述定义的类A
,并且如下所示:
class B extends A
{
}
在这种情况下,调用B.DoSomething()
也会输出"A“。
3.
假设我们仍然具有如上定义的类A
,并改为如下所示:
class B extends A
{
@Override
public void DoSomething()
{
Output("B");
}
}
现在,调用B.DoSomething()
将输出"B“。
4.
假设我们仍然有如上定义的类A
,现在改为:
class B extends A
{
@Override
public void DoSomething()
{
super.DoSomething();
Output("B");
}
}
现在,调用B.DoSomething()
将输出"A“,然后输出"B”。
发布于 2011-09-09 15:08:16
您正在创建一个继承自Activity
的类;但是您必须定义它的行为,因此您在创建时告诉您的类调用基类来完成所有必须完成的事情(super.onCreate()
),然后设置您的布局以显示您的屏幕/应用程序(setContentView()
)。
还有一件事:看看在public void onCreate(Bundle savedInstanceState)
:override之前定义的@Override
:override意味着您正在扩展基本方法,让您的派生类完成基本方法的所有工作,包括(在)您的逻辑之后。
https://stackoverflow.com/questions/7358219
复制相似问题