测试扩展Activity实现onClickListener,何时/ where创建类“Test”的实例?

时间:2013-10-13 07:43:40

标签: android interface instance onclicklistener

在下面的代码中,类"测试"是扩展Acitivity并实现OnClickListener。

但是,"这个"参考类"测试"的实例。没有"新的"创造 一个新的对象上课"测试"。那么,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);
}

感谢任何人的帮助。

2 个答案:

答案 0 :(得分:2)

Android框架会在您打开新意图时为您实例化您的活动,这就是您不需要执行new ActivityClass的原因,您只需在AndroidManifest中声明您的活动。< / p>

  

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

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

答案 1 :(得分: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)。