当我在activity的xml中创建一个android:onClick属性时,onClick定义的方法需要有View参数,为什么要查看?
即。 我的活动中的onClick方法----------> public void sayHello(View v){...}
考虑下一个代码,我没有使用view变量,但是我还是需要在方法中传递它,为什么会这样?:
public void onClick(View view){
TextView t= new TextView(this);
t=(TextView)this.findViewById(R.id.textView2);
t.setText("new text");
}
答案 0 :(得分:7)
因此,您知道哪个View
正在调用该方法。
这就像为您的活动实现OnClickListener
一样,创建的方法是onClick(View v)
(或arg0
,具体取决于您的Eclipse),从xml定义它只是为View指定一种监听器,以及来自侦听器的方法作为该参数。
进入方法后,您可以切换按钮的ID,执行不同的操作:
public void myOnClickMethod(View v){
switch(v.getId()){
case R.id.button1:
//Do something for button 1
break;
case R.id.button2:
//Do something for button 2
break;
}
}
简而言之。 Android在您定义OnClickListener
属性时只为您实现android:onClick="myOnClickMethod"
。
答案 1 :(得分:1)
在回答这个问题之前,我想提一下观点是什么......
Android应用包含的活动类似于屏幕,其中还包含GUI元素(如按钮)。简单来说,那些GUI元素称为视图。
回答你的问题...
想象一下你的活动有多个按钮的情况(我们认为它是5),点击这些按钮会调用相同的函数(即onClick())。那么,程序将如何知道点击了哪个按钮。答案很简单,只需将一个view参数传递给onClick()函数,该函数将允许访问有关所点击按钮的信息。