在下面的代码中,类"测试"是扩展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);
}
感谢任何人的帮助。
答案 0 :(得分:2)
Android框架会在您打开新意图时为您实例化您的活动,这就是您不需要执行new ActivityClass
的原因,您只需在AndroidManifest
中声明您的活动。< / p>
那么,在何时/何时创建了Test类的实例?
实例是在“内部”创建的,介于openIntent
和onCreate
方法之间。
答案 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
)。