1

在以下代码中,“Test”类扩展了 Acitivity 并实现了 OnClickListener。

但是,“this”指的是“Test”类的实例。没有“新”来为“Test”类创建新对象。那么,Test 类的实例在哪里/何时创建?

public class Test extends Activity implements OnClickListener {

Button playButton;

@Override

public void onCreate(Bundle savedInstanceState) {

     super.onCreate(savedInstanceState);

     setContentView(R.layout.main);

     playButton = (Button) this.findViewById(R.id.Button01);

     playButton.setOnClickListener(this);
}

感谢任何人的帮助。

4

2 回答 2

2

当您打开新的意图时,Android 框架会为您实例化您的活动,这就是为什么您不需要这样做new ActivityClass,您所要做的就是在您的AndroidManifest.

那么,Test 类的实例在哪里/何时创建?

该实例是“内部”创建的,介于openIntentonCreate方法之间。

于 2013-10-13T07:49:33.530 回答
1

那么,Test 类的实例在哪里/何时创建?

在调用public void onCreate(Bundle savedInstanceState)方法(在你的情况下)因为它的主要活动

为了更清楚,让我们更改一下您的代码:

public void onCreate(Bundle savedInstanceState) {

     super.onCreate(savedInstanceState);

     setContentView(R.layout.main);

     playButton = (Button) this.findViewById(R.id.Button01);

      OnClickListener clickListener = this; // take current instance

     playButton.setOnClickListener(clickListener);
}

我们通过传递实例来监听事件,将我们的 Activity 注册到监听器。但是我们不希望setOnClickListener看到我们所有的方法,所以他们要求我们只提供接口(OnClickListener)。

于 2013-10-13T07:57:51.383 回答